Line Simplification
I just want to point out how well Schuyler Erle's implementation of Douglas-Peucker line simplification plays with Shapely.
>>> from shapely.geometry import Point >>> point = Point(0.0, 0.0) >>> outline = point.buffer(2.0, quadsegs=32).boundary >>> coords = list(outline.coords) >>> from dp import simplify_points >>> simple_coords = simplify_points(coords, 0.25) >>> from shapely.geometry import LineString >>> simple_outline = LineString(simple_coords) >>> outline.length 12.565109003731115 >>> simple_outline.length 12.245869835682875
The simplify_points function requires a sequence of coordinate tuples. The coords property of a Shapely geometry is an iterator over coordinate tuples, but you can make a sequence from the iterator by using Python's built in list function.
>>> from numpy import asarray >>> from matplotlib import pylab >>> a = asarray(outline) >>> fig = pylab.figure(1, figsize=(5,5), dpi=72) >>> pylab.show() >>> pylab.plot(a[:,0], a[:,1]) [<matplotlib.lines.Line2D instance at 0x8ae7d8c>] >>> b = asarray(simple_outline) >>> pylab.plot(b[:,0], b[:,1]) [<matplotlib.lines.Line2D instance at 0x90bc86c>]
The original:
And simplified: