JTS Topology Suite version 1.12

com.vividsolutions.jts.algorithm.distance
Class DiscreteHausdorffDistance

java.lang.Object
  extended by com.vividsolutions.jts.algorithm.distance.DiscreteHausdorffDistance

public class DiscreteHausdorffDistance
extends java.lang.Object

An algorithm for computing a distance metric which is an approximation to the Hausdorff Distance based on a discretization of the input Geometry. The algorithm computes the Hausdorff distance restricted to discrete points for one of the geometries. The points can be either the vertices of the geometries (the default), or the geometries with line segments densified by a given fraction. Also determines two points of the Geometries which are separated by the computed distance.

This algorithm is an approximation to the standard Hausdorff distance. Specifically,

    for all geometries a, b:    DHD(a, b) <= HD(a, b)
 
The approximation can be made as close as needed by densifying the input geometries. In the limit, this value will approach the true Hausdorff distance:
    DHD(A, B, densifyFactor) -> HD(A, B) as densifyFactor -> 0.0
 
The default approximation is exact or close enough for a large subset of useful cases. Examples of these are: An example where the default approximation is not close is:
   A = LINESTRING (0 0, 100 0, 10 100, 10 100)
   B = LINESTRING (0 100, 0 10, 80 10)
   
   DHD(A, B) = 22.360679774997898
   HD(A, B) ~= 47.8
 


Nested Class Summary
static class DiscreteHausdorffDistance.MaxDensifiedByFractionDistanceFilter
           
static class DiscreteHausdorffDistance.MaxPointDistanceFilter
           
 
Constructor Summary
DiscreteHausdorffDistance(Geometry g0, Geometry g1)
           
 
Method Summary
 double distance()
           
static double distance(Geometry g0, Geometry g1)
           
static double distance(Geometry g0, Geometry g1, double densifyFrac)
           
 Coordinate[] getCoordinates()
           
 double orientedDistance()
           
 void setDensifyFraction(double densifyFrac)
          Sets the fraction by which to densify each segment.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DiscreteHausdorffDistance

public DiscreteHausdorffDistance(Geometry g0,
                                 Geometry g1)
Method Detail

distance

public static double distance(Geometry g0,
                              Geometry g1)

distance

public static double distance(Geometry g0,
                              Geometry g1,
                              double densifyFrac)

setDensifyFraction

public void setDensifyFraction(double densifyFrac)
Sets the fraction by which to densify each segment. Each segment will be (virtually) split into a number of equal-length subsegments, whose fraction of the total length is closest to the given fraction.

Parameters:
densifyPercent -

distance

public double distance()

orientedDistance

public double orientedDistance()

getCoordinates

public Coordinate[] getCoordinates()

JTS Topology Suite version 1.12