GEOS 3.14.0dev
|
Computes the distance between the facets (segments and vertices) of two Geometrys using a Branch-and-Bound algorithm. More...
#include <IndexedFacetDistance.h>
Public Member Functions | |
IndexedFacetDistance (const geom::Geometry *g) | |
Creates a new distance-finding instance for a given target geom::Geometry. | |
double | distance (const geom::Geometry *g) const |
Computes the distance from the base geometry to the given geometry. | |
bool | isWithinDistance (const geom::Geometry *g, double maxDistance) const |
Tests whether the base geometry lies within a specified distance of the given geometry. | |
std::vector< GeometryLocation > | nearestLocations (const geom::Geometry *g) const |
Computes the nearest locations on the base geometry and the given geometry. | |
std::unique_ptr< geom::CoordinateSequence > | nearestPoints (const geom::Geometry *g) const |
Compute the nearest locations on the target geometry and the given geometry. | |
Static Public Member Functions | |
static double | distance (const geom::Geometry *g1, const geom::Geometry *g2) |
Computes the distance between facets of two geometries. | |
static std::unique_ptr< geom::CoordinateSequence > | nearestPoints (const geom::Geometry *g1, const geom::Geometry *g2) |
Computes the nearest points of the facets of two geometries. | |
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:
Using this technique is usually much more performant than using the brute-force geom::Geometry::distance() when one or both input geometries are large, or when evaluating many distance computations against a single geometry.
|
inline |
Creates a new distance-finding instance for a given target geom::Geometry.
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 lineal and puntal inputs, this is equivalent to computing the conventional distance. In the case of polygonal inputs, this is equivalent to computing the distance to the polygon boundaries.
g | a Geometry, which may be of any type. |
double geos::operation::distance::IndexedFacetDistance::distance | ( | const geom::Geometry * | g | ) | const |
Computes the distance from the base geometry to the given geometry.
g | the geometry to compute the distance to |
|
static |
Computes the distance between facets of two geometries.
For geometries with many segments or points, this can be faster than using a simple distance algorithm.
g1 | a geometry |
g2 | a geometry |
bool geos::operation::distance::IndexedFacetDistance::isWithinDistance | ( | const geom::Geometry * | g, |
double | maxDistance | ||
) | const |
Tests whether the base geometry lies within a specified distance of the given geometry.
g | the geometry to test |
maxDistance | the maximum distance to test |
std::vector< GeometryLocation > geos::operation::distance::IndexedFacetDistance::nearestLocations | ( | const geom::Geometry * | g | ) | const |
Computes the nearest locations on the base geometry and the given geometry.
g | the geometry to compute the nearest location to |
std::unique_ptr< geom::CoordinateSequence > geos::operation::distance::IndexedFacetDistance::nearestPoints | ( | const geom::Geometry * | g | ) | const |
Compute the nearest locations on the target geometry and the given geometry.
g | the geometry to compute the nearest point to |
|
static |
Computes the nearest points of the facets of two geometries.
g1 | a geometry |
g2 | a geometry |