com.vividsolutions.jts.algorithm.distance
Class DiscreteHausdorffDistance
java.lang.Object
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:
- computing distance between Linestrings that are roughly parallel to each other,
and roughly equal in length. This occurs in matching linear networks.
- Testing similarity of geometries.
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
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
DiscreteHausdorffDistance
public DiscreteHausdorffDistance(Geometry g0,
Geometry g1)
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()