Package org.locationtech.jts.simplify
Class DouglasPeuckerSimplifier
- java.lang.Object
-
- org.locationtech.jts.simplify.DouglasPeuckerSimplifier
-
public class DouglasPeuckerSimplifier extends java.lang.Object
Simplifies aGeometry
using the Douglas-Peucker algorithm. Ensures that any polygonal geometries returned are valid. Simple lines are not guaranteed to remain simple after simplification. All geometry types are handled. Empty and point geometries are returned unchanged. Empty geometry components are deleted.Note that in general D-P 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. To simplify geometry while preserving topology use
TopologyPreservingSimplifier
. (However, using D-P is significantly faster).KNOWN BUGS
- In some cases the approach used to clean invalid simplified polygons can distort the output geometry severely.
- Version:
- 1.7
- See Also:
TopologyPreservingSimplifier
-
-
Constructor Summary
Constructors Constructor Description DouglasPeuckerSimplifier(Geometry inputGeom)
Creates a simplifier for a given geometry.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description Geometry
getResultGeometry()
Gets the simplified geometry.void
setDistanceTolerance(double distanceTolerance)
Sets the distance tolerance for the simplification.void
setEnsureValid(boolean isEnsureValidTopology)
Controls whether simplified polygons will be "fixed" to have valid topology.static Geometry
simplify(Geometry geom, double distanceTolerance)
Simplifies a geometry using a given tolerance.
-
-
-
Constructor Detail
-
DouglasPeuckerSimplifier
public DouglasPeuckerSimplifier(Geometry inputGeom)
Creates a simplifier for a given geometry.- Parameters:
inputGeom
- the geometry to simplify
-
-
Method Detail
-
simplify
public static Geometry simplify(Geometry geom, double distanceTolerance)
Simplifies a geometry using a given tolerance.- Parameters:
geom
- geometry to simplifydistanceTolerance
- the tolerance to use- Returns:
- a simplified version of the geometry
-
setDistanceTolerance
public void setDistanceTolerance(double distanceTolerance)
Sets the distance tolerance for the simplification. All vertices in the simplified geometry will be within this distance of the original geometry. The tolerance value must be non-negative.- Parameters:
distanceTolerance
- the approximation tolerance to use
-
setEnsureValid
public void setEnsureValid(boolean isEnsureValidTopology)
Controls whether simplified polygons will be "fixed" to have valid topology. The caller may choose to disable this because:- valid topology is not required
- fixing topology is a relative expensive operation
- in some pathological cases the topology fixing operation may either fail or run for too long
- Parameters:
isEnsureValidTopology
-
-
getResultGeometry
public Geometry getResultGeometry()
Gets the simplified geometry.- Returns:
- the simplified geometry
-
-