Class Distance3DOp


  • public class Distance3DOp
    extends java.lang.Object
    Find two points on two 3D 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).

    3D geometries have vertex Z ordinates defined. 3D Polygons are assumed to lie in a single plane (which is enforced if not actually the case). 3D LineStrings and Points may have any configuration.

    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 for X and Y ordinates. Z ordinate is not interpolated.

    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
    • Constructor Detail

      • Distance3DOp

        public Distance3DOp​(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
      • Distance3DOp

        public Distance3DOp​(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 Detail

      • 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
      • 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:
        java.lang.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
      • 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