Package org.locationtech.jts.algorithm
Class InteriorPointArea
- java.lang.Object
-
- org.locationtech.jts.algorithm.InteriorPointArea
-
public class InteriorPointArea extends java.lang.ObjectComputes a point in the interior of an areal geometry.Algorithm
- Find a Y value which is close to the centre of the geometry's vertical extent but is different to any of it's Y ordinates.
- Create a horizontal bisector line using the Y value and the geometry's horizontal extent
- Find the intersection between the geometry and the horizontal bisector line. The intersection is a collection of lines and points.
- Pick the midpoint of the largest intersection geometry
KNOWN BUGS
- If a fixed precision model is used, in some cases this method may return a point which does not lie in the interior.
- Version:
- 1.7
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static classInteriorPointArea.SafeBisectorFinderFinds a safe bisector Y ordinate by projecting to the Y axis and finding the Y-ordinate interval which contains the centre of the Y extent.
-
Field Summary
Fields Modifier and Type Field Description private GeometryFactoryfactoryprivate CoordinateinteriorPointprivate doublemaxWidth
-
Constructor Summary
Constructors Constructor Description InteriorPointArea(Geometry g)Creates a new interior point finder for an areal geometry.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidadd(Geometry geom)Tests the interior vertices (if any) defined by an areal Geometry for the best inside point.private voidaddPolygon(Geometry geometry)Finds an interior point of a Polygon.private static doubleavg(double a, double b)static Coordinatecentre(Envelope envelope)Returns the centre point of the envelope.CoordinategetInteriorPoint()Gets the computed interior point.protected LineStringhorizontalBisector(Geometry geometry)private GeometrywidestGeometry(Geometry geometry)private GeometrywidestGeometry(GeometryCollection gc)
-
-
-
Field Detail
-
factory
private GeometryFactory factory
-
interiorPoint
private Coordinate interiorPoint
-
maxWidth
private double maxWidth
-
-
Constructor Detail
-
InteriorPointArea
public InteriorPointArea(Geometry g)
Creates a new interior point finder for an areal geometry.- Parameters:
g- an areal geometry
-
-
Method Detail
-
avg
private static double avg(double a, double b)
-
getInteriorPoint
public Coordinate getInteriorPoint()
Gets the computed interior point.- Returns:
- the coordinate of an interior point
-
add
private void add(Geometry geom)
Tests the interior vertices (if any) defined by an areal Geometry for the best inside point. If a component Geometry is not of dimension 2 it is not tested.- Parameters:
geom- the geometry to add
-
addPolygon
private void addPolygon(Geometry geometry)
Finds an interior point of a Polygon.- Parameters:
geometry- the geometry to analyze
-
widestGeometry
private Geometry widestGeometry(GeometryCollection gc)
-
horizontalBisector
protected LineString horizontalBisector(Geometry geometry)
-
centre
public static Coordinate centre(Envelope envelope)
Returns the centre point of the envelope.- Parameters:
envelope- the envelope to analyze- Returns:
- the centre of the envelope
-
-