DiscreteHausdorffDistance class

An algorithm for computing a distance metric which is an approximation to the Hausdorff Distance based on a discretization of the input {@link 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

Properties

densifyFrac double
Value of 0.0 indicates that no densification should take place
getter/setter pair
g0 Geometry
getter/setter pair
g1 Geometry
getter/setter pair
hashCode int
The hash code for this object.
no setterinherited
ptDist PointPairDistance
getter/setter pair
runtimeType Type
A representation of the runtime type of the object.
no setterinherited

Methods

compute(Geometry g0, Geometry g1) → void
computeOrientedDistance(Geometry discreteGeom, Geometry geom, PointPairDistance ptDist) → void
distance() double
getCoordinates() List<Coordinate>
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
orientedDistance() double
setDensifyFraction(double densifyFrac) → void
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.
toString() String
A string representation of this object.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited

Static Methods

distanceStatic(Geometry g0, Geometry g1) double
distanceStaticDF(Geometry g0, Geometry g1, double densifyFrac) double