Class InteriorPointArea

java.lang.Object
org.locationtech.jts.algorithm.InteriorPointArea

public class InteriorPointArea extends Object
Computes 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
  • Field Details

    • factory

      private GeometryFactory factory
    • interiorPoint

      private Coordinate interiorPoint
    • maxWidth

      private double maxWidth
  • Constructor Details

    • InteriorPointArea

      public InteriorPointArea(Geometry g)
      Creates a new interior point finder for an areal geometry.
      Parameters:
      g - an areal geometry
  • Method Details

    • 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(Geometry geometry)
    • 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