Skip to content
Browse files

gis: Fixed #5434, GEOS `simplify()` may now preserve topologies via p…

…atch from rcoup.

git-svn-id: bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
1 parent 101446d commit 9c1714234a8695a8c0838f2e5f650da043a52892 @jbronn jbronn committed
Showing with 11 additions and 2 deletions.
  1. +11 −2 django/contrib/gis/geos/
13 django/contrib/gis/geos/
@@ -496,13 +496,22 @@ def point_on_surface(self):
"Computes an interior point of this Geometry."
return self._unary_topology(lgeos.GEOSPointOnSurface)
- def simplify(self, tolerance=0.0):
+ def simplify(self, tolerance=0.0, preserve_topology=False):
Returns the Geometry, simplified using the Douglas-Peucker algorithm
to the specified tolerance (higher tolerance => less points). If no
tolerance provided, defaults to 0.
+ By default, this function does not preserve topology - e.g. polygons can
+ be split, collapse to lines or disappear holes can be created or
+ disappear, and lines can cross. By specifying preserve_topology=True,
+ the result will have the same dimension and number of components as the
+ input. This is significantly slower.
- return self._unary_topology(lgeos.GEOSSimplify, c_double(tolerance))
+ if preserve_topology:
+ return self._unary_topology(lgeos.GEOSTopologyPreserveSimplify, c_double(tolerance))
+ else:
+ return self._unary_topology(lgeos.GEOSSimplify, c_double(tolerance))
def relate(self, other):
"Returns the DE-9IM intersection matrix for this Geometry and the other."

0 comments on commit 9c17142

Please sign in to comment.
Something went wrong with that request. Please try again.