com.vividsolutions.jts.simplify
Class TopologyPreservingSimplifier
java.lang.Object
com.vividsolutions.jts.simplify.TopologyPreservingSimplifier
public class TopologyPreservingSimplifier
- extends java.lang.Object
Simplifies a geometry, ensuring that
the result is a valid geometry having the
same dimension and number of components as the input.
The simplification uses a maximum distance difference algorithm
similar to the one used in the Douglas-Peucker algorithm.
In particular, if the input is an areal geometry
( Polygon
or MultiPolygon
):
- The result has the same number of shells and holes (rings) as the input,
in the same order
- The result rings touch at no more than the number of touching point in the input
(although they may touch at fewer points).
(The key implication of this constraint is that the
output will be topologically valid if the input was.)
KNOWN BUGS
- If a small hole is very near an edge, it is possible for the edge to be moved by
a relatively large tolerance value and end up with the hole outside the result shell.
Similarly, it is possible for a small polygon component to end up inside
a nearby larger polygon.
A workaround is to test for this situation in post-processing and remove
any invalid holes or polygons.
- Author:
- Martin Davis
- See Also:
DouglasPeuckerSimplifier
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
TopologyPreservingSimplifier
public TopologyPreservingSimplifier(Geometry inputGeom)
simplify
public static Geometry simplify(Geometry geom,
double distanceTolerance)
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. A tolerance value
of zero is effectively a no-op.
- Parameters:
distanceTolerance
- the approximation tolerance to use
getResultGeometry
public Geometry getResultGeometry()