Package org.locationtech.jts.simplify
Class PolygonHullSimplifier
- java.lang.Object
-
- org.locationtech.jts.simplify.PolygonHullSimplifier
-
public class PolygonHullSimplifier extends java.lang.Object
Computes topology-preserving simplified hulls of polygonal geometry. Both outer and inner hulls can be computed. Outer hulls contain the input geometry and are larger in area. Inner hulls are contained by the input geometry and are smaller in area. In both the hull vertices are a subset of the input vertices. The hull construction attempts to minimize the area difference with the input geometry. Hulls are generally concave if the input is. Computed hulls are topology-preserving: they do not contain any self-intersections or overlaps, so the result polygonal geometry is valid.Polygons with holes and MultiPolygons are supported. The result has the same geometric type and structure as the input.
The number of vertices in the computed hull is determined by a target parameter. Two parameters are supported:
- Vertex Number fraction: the fraction of the input vertices retained in the result. Value 1 produces the original geometry. Smaller values produce less concave results. For outer hulls, value 0 produces the convex hull (with triangles for any holes). For inner hulls, value 0 produces a triangle (if no holes are present).
- Area Delta ratio: the ratio of the change in area to the input area. Value 0 produces the original geometry. Larger values produce less concave results.
- Author:
- Martin Davis
-
-
Constructor Summary
Constructors Constructor Description PolygonHullSimplifier(Geometry inputGeom, boolean isOuter)
Creates a new instance to compute a simplified hull of a polygonal geometry.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description Geometry
getResult()
Gets the result polygonal hull geometry.static Geometry
hull(Geometry geom, boolean isOuter, double vertexNumFraction)
Computes a topology-preserving simplified hull of a polygonal geometry, with hull shape determined by a target parameter specifying the fraction of the input vertices retained in the result.static Geometry
hullByAreaDelta(Geometry geom, boolean isOuter, double areaDeltaRatio)
Computes a topology-preserving simplified hull of a polygonal geometry, with hull shape determined by a target parameter specifying the ratio of maximum difference in area to original area.void
setAreaDeltaRatio(double areaDeltaRatio)
Sets the target maximum ratio of the change in area of the result to the input area.void
setVertexNumFraction(double vertexNumFraction)
Sets the target fraction of input vertices which are retained in the result.
-
-
-
Constructor Detail
-
PolygonHullSimplifier
public PolygonHullSimplifier(Geometry inputGeom, boolean isOuter)
Creates a new instance to compute a simplified hull of a polygonal geometry. An outer or inner hull is computed depending on the value ofisOuter
.- Parameters:
inputGeom
- the polygonal geometry to processisOuter
- indicates whether to compute an outer or inner hull
-
-
Method Detail
-
hull
public static Geometry hull(Geometry geom, boolean isOuter, double vertexNumFraction)
Computes a topology-preserving simplified hull of a polygonal geometry, with hull shape determined by a target parameter specifying the fraction of the input vertices retained in the result. Larger values compute less concave results. A value of 1 produces the convex hull; a value of 0 produces the original geometry. Either outer or inner hulls can be computed.- Parameters:
geom
- the polygonal geometry to processisOuter
- indicates whether to compute an outer or inner hullvertexNumFraction
- the target fraction of number of input vertices in result- Returns:
- the hull geometry
-
hullByAreaDelta
public static Geometry hullByAreaDelta(Geometry geom, boolean isOuter, double areaDeltaRatio)
Computes a topology-preserving simplified hull of a polygonal geometry, with hull shape determined by a target parameter specifying the ratio of maximum difference in area to original area. Larger values compute less concave results. A value of 0 produces the original geometry. Either outer or inner hulls can be computed.- Parameters:
geom
- the polygonal geometry to processisOuter
- indicates whether to compute an outer or inner hullareaDeltaRatio
- the target ratio of area difference to original area- Returns:
- the hull geometry
-
setVertexNumFraction
public void setVertexNumFraction(double vertexNumFraction)
Sets the target fraction of input vertices which are retained in the result. The value should be in the range [0,1].- Parameters:
vertexNumFraction
- a fraction of the number of input vertices
-
setAreaDeltaRatio
public void setAreaDeltaRatio(double areaDeltaRatio)
Sets the target maximum ratio of the change in area of the result to the input area. The value must be 0 or greater.- Parameters:
areaDeltaRatio
- a ratio of the change in area of the result
-
getResult
public Geometry getResult()
Gets the result polygonal hull geometry.- Returns:
- the polygonal geometry for the hull
-
-