Table of Contents

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.
Using this technique is usually much more performant than using the brute-force Distance(Geometry) when one or both input geometries are large, or when evaluating many distance computations against a single geometry.
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 Geometry

A 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 Geometry

The 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

g1 Geometry

A geometry

g2 Geometry

A geometry

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

g1 Geometry

A geometry

g2 Geometry

A geometry

distance double

The distance limit

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

g Geometry

The geometry to test

maxDistance double

The maximum distance to test

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 Geometry

Ihe 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 Geometry

Ihe 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

g1 Geometry

A geometry

g2 Geometry

A geometry

Returns

Coordinate[]

The nearest points on the facets of the geometries