Class IndexedFacetDistance
- Namespace
- NetTopologySuite.Operation.Distance
- Assembly
- NetTopologySuite.dll
Computes the distance between the facets (segments and vertices) of two Geometrys using a Branch-and-Bound algorithm. The Branch-and-Bound algorithm operates over a traversal of R-trees built on the target and the query geometries.
This approach provides the following benefits:
- Performance is dramatically improved due to the use of the R-tree index and the pruning due to the Branch-and-Bound approach
- The spatial index on the target geometry is cached which allow reuse in an repeated query situation.
public class IndexedFacetDistance
- Inheritance
-
IndexedFacetDistance
- Inherited Members
Remarks
This class is thread-safe.
Constructors
IndexedFacetDistance(Geometry)
Creates a new distance-finding instance for a given target Geometry.
public IndexedFacetDistance(Geometry g1)
Parameters
g1
GeometryA Geometry, which may be of any type.
Remarks
Distances will be computed to all facets of the input geometry. The facets of the geometry are the discrete segments and points contained in its components.
In the case of ILineal and IPuntal inputs, this is equivalent to computing the conventional distance.
In the case of IPolygonal inputs, this is equivalent to computing the distance to the polygon boundaries.
Methods
Distance(Geometry)
Computes the distance from the base geometry to the given geometry.
public double Distance(Geometry g)
Parameters
g
GeometryThe geometry to compute the distance to.
Returns
- double
The computed distance
Distance(Geometry, Geometry)
Computes the distance between facets of two geometries.
public static double Distance(Geometry g1, Geometry g2)
Parameters
Returns
- double
The distance between the two geometries
Remarks
For geometries with many segments or points, this can be faster than using a simple distance algorithm.
IsWithinDistance(Geometry, Geometry, double)
Tests whether the facets of two geometries lie within a given distance.
public static bool IsWithinDistance(Geometry g1, Geometry g2, double distance)
Parameters
Returns
- bool
true
if two facets lie with the given distance
IsWithinDistance(Geometry, double)
Tests whether the base geometry lies within a specified distance of the given geometry.
public bool IsWithinDistance(Geometry g, double maxDistance)
Parameters
Returns
- bool
true
if the geometry lies with the specified distance
NearestLocations(Geometry)
Computes the nearest locations on the base geometry and the given geometry.
public GeometryLocation[] NearestLocations(Geometry g)
Parameters
g
GeometryIhe geometry to compute the nearest location to.
Returns
- GeometryLocation[]
The nearest locations.
NearestPoints(Geometry)
Computes the nearest locations on the target geometry and the given geometry.
public Coordinate[] NearestPoints(Geometry g)
Parameters
g
GeometryIhe geometry to compute the nearest point to.
Returns
- Coordinate[]
The nearest points.
NearestPoints(Geometry, Geometry)
Computes the nearest points of the facets of two geometries.
public static Coordinate[] NearestPoints(Geometry g1, Geometry g2)
Parameters
Returns
- Coordinate[]
The nearest points on the facets of the geometries