Presentation on theme: "Polyline Simplification"— Presentation transcript:
1 Polyline Simplification Finally, a TopologicallyConsistent Algorithm!!Alan SaalfeldThe Ohio State University
2 What is Polyline Simplification? A polyline is a connected non-self-intersecting path in the plane made up of line segmentsSimplification involves replacing the original polylines with polylines of fewer segmentsRestrictions are placed on the replacement polylines:Each should be “close” to the original polylineAll should preserve “sidedness” (topology)
3 It all boils down to replacing a sub-polyline with a line segment vivjvivjAreas inverted by replacing asubpolyline Pij by a single segment eij
4 Some “sidedness” is always lost in simplification =+Above lineBelow line
5 What makes simplification hard? Not nearness constraints (that’s easy!!)Douglas-Peucker algorithm (1973)--our model!Many other algorithms work on isolated linesTopological conflicts can be hard to detectEnd-point representation of vectors hinders one’s ability to quickly recognize potential feature conflictsConflicting points change as the algorithm runs: alleviating one conflict can result in another!Don’t want to have to check all possible interactions (O(n2)) at every stage of the process
6 Testing for topological changes PolylinevsStraight line approximation
7 Sidedness for the straight line segment Below the lineAbove the line
8 Sidedness for the polyline Below the polylineAbove the polyline
9 Sidedness differences Above both linesBelow both linesAbove one line,below the other
10 Testing for topological correctness A same-sidedness test is identical to inside/outside testing for polygons: namely, determine the parity (odd or even) of the number of crossings (of both the polyline and the simplifying segment) of any ray (vertical is easy) emanating from the test point
11 What topological problems arise? Polylines “move” when the simplified version replaces the original versionLabeled points wind up on the wrong side of the replacement polylineSimplified polylines cross other polylinesA simplified polyline may even cross itself
12 Labeled points wind up on the wrong side of the replacement polyline q
13 Soundings wind up on the wrong side of the replacement coastline 152010
19 The Douglas-Peucker Algorithm Recursive procedure:Asks “Does a single segment adequately (i.e., within e) represent the current sub-polyline?”If not, then two segments are chosen, each representing a smaller sub-polyline; and each of them gets asked the same question.
20 The Douglas-Peucker Algorithm Key properties:We examine one polyline at a time.A subset of vertices are chosen.Vertices are added one at a time and never removed from the growing simplified polyline (a greedy algorithm).Each new candidate vertex lies on the convex hull of the sub-polyline currently under consideration for being approximated by a single segment.The new candidate vertex is unique up to ties in distance.Each recursive call is a “whole new ballgame”.
22 Hull Lemma IAny conflicts with the simplified polyline must occur within the closed convex hull of the original polyline.Proof: Vertices of the simplified polyline form a subset of polyline vertices; a line segment joining two points in a convex region remains entirely inside the convex region.
23 Hull Lemma IIAny line passing completely through the hull must cross the original polyline that generated the hull.
24 Corollary I to Hull Lemmas I & II Any line segment that intersects the simplified version, but does not intersect the original polyline, must have at least one end point inside the convex hull of the original polyline.
25 Corollary II to Hull Lemmas I & II We need only examine the topological correctness of “foreign” point features (including shape points and segment endpoints) lying within the convex hull of the current sub-polyline being represented by a single line segment.
26 Another way to look at it: pqWhat changes if we represent the polyline by two line segments instead of by a single line segment?Replacing a line segment by two segments toggles the topological correctness or incorrectness of all points inside the triangle (and only those points).
27 Effect of replacing sub-polyline by a single segment Points stay on same side(+)Points change side(-)
28 Effect of replacing sub-polyline by two segments Points change side (-)Points stay on same side (+)
29 Effect of replacing a single segment simplification with two segments Points keep relative orientation:(same)(different)Points change relative orientation:(same to different or vice versa)
30 Convergence resultsNested subhulls give us ever smaller regions in which to search for conflictsThe set of potentially conflicting points decreases with each iteration, except for original polyline points that may conflict with other sub-polylinesOne may always achieve correct topology with enough iterations
31 Hull Lemma IIIVertices appear in order on both the upper hull and the lower hull
32 Convex hull generation 12 (Pop CW section back to “2”Push “12” onto both sections)54621112 (Pop both sections:Pop CW section back to “5”;Pop C-CW section back to “9”;Push “12” onto both sections)103817912 (Pop C-CW section back to “2”;Push “12” onto both sections)A double-ended queue (deque): 11, 9, 7, 1, 2, 4, 5, 6, 11Current clockwise (CW) section: 1, 2, 4, 5, 6, 11Current counter-clockwise (C-CW) section: 1, 7, 9, 11
33 Detecting self-intersections A potential conflict exists when subhulls overlapSubhulls overlap if and only if the right subhull starts off to the left of the left subhull. In that case, at least one subhull must contain points of the other subhull’s polyline.
34 Our Basic AlgorithmRun Douglas-Peucker to get segments that approximate each sub-polyline to within eOn each resulting segment find the sub-polyline’s hull and identify any external points in that hullClassify all external points by “sidedness”Continue Douglas-Peucker, adding nodes until:All sidedness is correct (including any “new” external points from other portions of the sub-polyline)(Change “sidedness” flag in one triangle at a time)Furthest node is within e
35 What’s next?Write code to apply our basic algorithm to real data from NOAA, USGS, and NIMA.Determine performance in terms of:Number of extra points required to fix topology.Aesthetic considerations of polylines generated.Effects due to choices made (e.g., contours).Look at possible alternatives to our basic algorithm.
36 Variants on the Basic Algorithm Change the next-point selection criterion from “furthest point” to something else (The condition that the selected point belong to the hull may no longer hold.)Correct “sidedness” problems first, then apply the e-threshold constraintChoose the next point from among interior points of segments of the polyline (This requires adding vertices to the polyline without changing its trace.)Examine algorithms that do not subsample vertices