forked from openlayers/ol2
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added Douglas-Peucker linestring simplification to OpenLayers.Geometr…
…y.LineString. Thanks chrismayer for this excellent patch. p=chrismayer, r=me (closes #2869) git-svn-id: http://svn.openlayers.org/trunk/openlayers@10969 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
- Loading branch information
Showing
4 changed files
with
838 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
<!DOCTYPE html> | ||
<html> | ||
<head> | ||
<title>Simplify LineString</title> | ||
<link rel="stylesheet" href="../theme/default/style.css" type="text/css"> | ||
<link rel="stylesheet" href="style.css" type="text/css"> | ||
<style type="text/css"> | ||
#map, #map-simplify { | ||
height: 400px; | ||
width: 400px; | ||
margin: 5px !important; | ||
float: left; | ||
} | ||
#info { | ||
width: 300px; | ||
float: left; | ||
} | ||
</style> | ||
</head> | ||
<body> | ||
<h1 id="title">Simplify a LineString</h1> | ||
<div id="tags"> | ||
Douglas-Peucker, Douglas, Peucker, Peuker, tolerance | ||
</div> | ||
<p id="shortdesc"> | ||
Shows the usage of the utility method "simplifyLineString" that | ||
implements the Douglas-Peucker algorithm to remove "insignificant" | ||
vertices from LineString geometries. | ||
</p> | ||
<div id="control-simplify"> | ||
<input name="tolerance" id="tolerance" type="number" min="0" max="1" step="0.02" value="0.1"> | ||
<input type="button" id="simplify" value="Simplify LineString"> | ||
<input type="button" id="animation" value="Start animation"> | ||
</div> | ||
<div id="map" class="smallmap"> | ||
</div> | ||
<div id="map-simplify" class="smallmap"> | ||
</div> | ||
<div id="info"> | ||
</div> | ||
<div id="docs" style="clear: both;"> | ||
<p> | ||
The method OpenLayers.Util.simplifyLineString can be used to | ||
simplify linestring geometries. Simplification sometimes is | ||
useful to enhance the perfomance of vector rendering or to | ||
reduce complexity of geometries. This might be especially handy | ||
when viewing geometries a small scales. | ||
</p> | ||
<p> | ||
OpenLayers.Util.simplifyLineString is a recursive implementation | ||
of the famous Douglas-Peucker algorithm. It | ||
is controlled by a tolerance factor that defines the threshold | ||
for vertices to be considered "insignificant" for the general | ||
structure of the geometry. | ||
</p> | ||
<p> | ||
The LineString on the left map can be simplified according to | ||
the tolerance value one enters in the form-field above the maps. | ||
Use a value between 0 and 1 for best results. If you navigate | ||
the left map, the right map will show the same location to make | ||
it easier to spot the differeces between the LineStrings. | ||
</p> | ||
<p> | ||
The LineString | ||
represents a part of the coastline of | ||
<a href="http://www.openstreetmap.org/?lat=54.7309684753418&lon=83.1809234619141&zoom=11">this | ||
place in Russia</a> — found via <a href="http://ryba4.com/python/ramer-douglas-peucker">an | ||
example implementation of the algorithm in python</a>. | ||
</p> | ||
<p> | ||
For a detailled explanation of the algorithm see | ||
<a href="http://en.wikipedia.org/wiki/Douglas-Peucker_algorithm">the | ||
Wikipedia article</a> or the original publication: David Douglas | ||
& Thomas Peucker, "Algorithms for the reduction of the | ||
number of points required to represent a digitized line or its | ||
caricature", The Canadian Cartographer 10(2), 112-122 (1973) | ||
(<a href="http://dx.doi.org/10.3138/FM57-6770-U75U-7727">DOI: | ||
10.3138/FM57-6770-U75U-7727</a>). | ||
</p> | ||
</div> | ||
<script type="text/javascript" src="../lib/OpenLayers.js"> | ||
</script> | ||
<script type="text/javascript" src="simplify-linestring.js"> | ||
</script> | ||
</body> | ||
</html> |
Oops, something went wrong.