Package org.locationtech.jts.simplify
Class VWSimplifier
java.lang.Object
org.locationtech.jts.simplify.VWSimplifier
Simplifies a
Geometry
using the Visvalingam-Whyatt area-based 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.
The simplification tolerance is specified as a distance. This is converted to an area tolerance by squaring it.
Note that in general this algorithm 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.
Known Bugs
- Not yet optimized for performance
- Does not simplify the endpoint of rings
To Do
- Allow specifying desired number of vertices in the output
- Version:
- 1.7
-
Nested Class Summary
Nested Classes -
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionGets 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
Simplifies a geometry using a given tolerance.
-
Field Details
-
inputGeom
-
distanceTolerance
private double distanceTolerance -
isEnsureValidTopology
private boolean isEnsureValidTopology
-
-
Constructor Details
-
VWSimplifier
Creates a simplifier for a given geometry.- Parameters:
inputGeom
- the geometry to simplify
-
-
Method Details
-
simplify
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
Gets the simplified geometry.- Returns:
- the simplified geometry
-