Class DistanceOp

java.lang.Object
org.locationtech.jts.operation.distance.DistanceOp

public class DistanceOp extends Object
Find two points on two Geometrys which lie within a given distance, or else are the nearest points on the geometries (in which case this also provides the distance between the geometries).

The distance computation also finds a pair of points in the input geometries which have the minimum distance between them. If a point lies in the interior of a line segment, the coordinate computed is a close approximation to the exact point.

The algorithms used are straightforward O(n^2) comparisons. This worst-case performance could be improved on by using Voronoi techniques or spatial indexes.

Version:
1.7
  • Field Details

    • geom

      private Geometry[] geom
    • terminateDistance

      private double terminateDistance
    • ptLocator

      private PointLocator ptLocator
    • minDistanceLocation

      private GeometryLocation[] minDistanceLocation
    • minDistance

      private double minDistance
  • Constructor Details

    • DistanceOp

      public DistanceOp(Geometry g0, Geometry g1)
      Constructs a DistanceOp that computes the distance and nearest points between the two specified geometries.
      Parameters:
      g0 - a Geometry
      g1 - a Geometry
    • DistanceOp

      public DistanceOp(Geometry g0, Geometry g1, double terminateDistance)
      Constructs a DistanceOp that computes the distance and nearest points between the two specified geometries.
      Parameters:
      g0 - a Geometry
      g1 - a Geometry
      terminateDistance - the distance on which to terminate the search
  • Method Details

    • distance

      public static double distance(Geometry g0, Geometry g1)
      Compute the distance between the nearest points of two geometries.
      Parameters:
      g0 - a Geometry
      g1 - another Geometry
      Returns:
      the distance between the geometries
    • isWithinDistance

      public static boolean isWithinDistance(Geometry g0, Geometry g1, double distance)
      Test whether two geometries lie within a given distance of each other.
      Parameters:
      g0 - a Geometry
      g1 - another Geometry
      distance - the distance to test
      Returns:
      true if g0.distance(g1) <= distance
    • nearestPoints

      public static Coordinate[] nearestPoints(Geometry g0, Geometry g1)
      Compute the the nearest points of two geometries. The points are presented in the same order as the input Geometries.
      Parameters:
      g0 - a Geometry
      g1 - another Geometry
      Returns:
      the nearest points in the geometries
    • closestPoints

      public static Coordinate[] closestPoints(Geometry g0, Geometry g1)
      Deprecated.
      renamed to nearestPoints
      Compute the the closest points of two geometries. The points are presented in the same order as the input Geometries.
      Parameters:
      g0 - a Geometry
      g1 - another Geometry
      Returns:
      the closest points in the geometries
    • distance

      public double distance()
      Report the distance between the nearest points on the input geometries.
      Returns:
      the distance between the geometries or 0 if either input geometry is empty
      Throws:
      IllegalArgumentException - if either input geometry is null
    • nearestPoints

      public Coordinate[] nearestPoints()
      Report the coordinates of the nearest points in the input geometries. The points are presented in the same order as the input Geometries.
      Returns:
      a pair of Coordinates of the nearest points
    • closestPoints

      public Coordinate[] closestPoints()
      Deprecated.
      renamed to nearestPoints
      Returns:
      a pair of Coordinates of the nearest points
    • nearestLocations

      public GeometryLocation[] nearestLocations()
      Report the locations of the nearest points in the input geometries. The locations are presented in the same order as the input Geometries.
      Returns:
      a pair of GeometryLocations for the nearest points
    • closestLocations

      public GeometryLocation[] closestLocations()
      Deprecated.
      renamed to nearestLocations
      Returns:
      a pair of GeometryLocations for the nearest points
    • updateMinDistance

      private void updateMinDistance(GeometryLocation[] locGeom, boolean flip)
    • computeMinDistance

      private void computeMinDistance()
    • computeContainmentDistance

      private void computeContainmentDistance()
    • computeContainmentDistance

      private void computeContainmentDistance(int polyGeomIndex, GeometryLocation[] locPtPoly)
    • computeContainmentDistance

      private void computeContainmentDistance(List locs, List polys, GeometryLocation[] locPtPoly)
    • computeContainmentDistance

      private void computeContainmentDistance(GeometryLocation ptLoc, Polygon poly, GeometryLocation[] locPtPoly)
    • computeFacetDistance

      private void computeFacetDistance()
      Computes distance between facets (lines and points) of input geometries.
    • computeMinDistanceLines

      private void computeMinDistanceLines(List lines0, List lines1, GeometryLocation[] locGeom)
    • computeMinDistancePoints

      private void computeMinDistancePoints(List points0, List points1, GeometryLocation[] locGeom)
    • computeMinDistanceLinesPoints

      private void computeMinDistanceLinesPoints(List lines, List points, GeometryLocation[] locGeom)
    • computeMinDistance

      private void computeMinDistance(LineString line0, LineString line1, GeometryLocation[] locGeom)
    • computeMinDistance

      private void computeMinDistance(LineString line, Point pt, GeometryLocation[] locGeom)