GEOS
3.9.1dev
|
Find two points on two geom::Geometrys which lie within a given distance, or else are the nearest points on the geometries (in which case this also provides the distance between the geometries). More...
#include <DistanceOp.h>
Public Member Functions | |
DistanceOp (const geom::Geometry *g0, const geom::Geometry *g1) | |
DistanceOp (const geom::Geometry &g0, const geom::Geometry &g1) | |
Constructs a DistanceOp that computes the distance and nearest points between the two specified geometries. More... | |
DistanceOp (const geom::Geometry &g0, const geom::Geometry &g1, double terminateDistance) | |
Constructs a DistanceOp that computes the distance and nearest points between the two specified geometries. More... | |
~DistanceOp ()=default | |
double | distance () |
std::unique_ptr< geom::CoordinateSequence > | nearestPoints () |
Static Public Member Functions | |
static double | distance (const geom::Geometry &g0, const geom::Geometry &g1) |
Compute the distance between the nearest points of two geometries. More... | |
static double | distance (const geom::Geometry *g0, const geom::Geometry *g1) |
static bool | isWithinDistance (const geom::Geometry &g0, const geom::Geometry &g1, double distance) |
Test whether two geometries lie within a given distance of each other. More... | |
static std::unique_ptr< geom::CoordinateSequence > | nearestPoints (const geom::Geometry *g0, const geom::Geometry *g1) |
Private Member Functions | |
void | updateMinDistance (std::array< std::unique_ptr< GeometryLocation >, 2 > &locGeom, bool flip) |
void | computeMinDistance () |
void | computeContainmentDistance () |
void | computeInside (std::vector< std::unique_ptr< GeometryLocation >> &locs, const std::vector< const geom::Polygon * > &polys, std::array< std::unique_ptr< GeometryLocation >, 2 > &locPtPoly) |
void | computeFacetDistance () |
void | computeMinDistanceLines (const std::vector< const geom::LineString * > &lines0, const std::vector< const geom::LineString * > &lines1, std::array< std::unique_ptr< GeometryLocation >, 2 > &locGeom) |
void | computeMinDistancePoints (const std::vector< const geom::Point * > &points0, const std::vector< const geom::Point * > &points1, std::array< std::unique_ptr< GeometryLocation >, 2 > &locGeom) |
void | computeMinDistanceLinesPoints (const std::vector< const geom::LineString * > &lines0, const std::vector< const geom::Point * > &points1, std::array< std::unique_ptr< GeometryLocation >, 2 > &locGeom) |
void | computeMinDistance (const geom::LineString *line0, const geom::LineString *line1, std::array< std::unique_ptr< GeometryLocation >, 2 > &locGeom) |
void | computeMinDistance (const geom::LineString *line, const geom::Point *pt, std::array< std::unique_ptr< GeometryLocation >, 2 > &locGeom) |
Private Attributes | |
std::array< geom::Geometry const *, 2 > | geom |
double | terminateDistance |
algorithm::PointLocator | ptLocator |
std::array< std::unique_ptr< GeometryLocation >, 2 > | minDistanceLocation |
double | minDistance |
bool | computed = false |
Find two points on two geom::Geometrys which lie within a given distance, or else are the nearest points on the geometries (in which case this also provides the distance between the geometries).
The distance computation also finds a pair of points in the input geometries which have the minimum distance between them. If a point lies in the interior of a line segment, the coordinate computed is a close approximation to the exact point.
Empty geometry collection components are ignored.
The algorithms used are straightforward O(n^2) comparisons. This worst-case performance could be improved on by using Voronoi techniques or spatial indexes.
Definition at line 74 of file DistanceOp.h.
geos::operation::distance::DistanceOp::DistanceOp | ( | const geom::Geometry * | g0, |
const geom::Geometry * | g1 | ||
) |
geos::operation::distance::DistanceOp::DistanceOp | ( | const geom::Geometry & | g0, |
const geom::Geometry & | g1 | ||
) |
Constructs a DistanceOp that computes the distance and nearest points between the two specified geometries.
g0 | a Geometry |
g1 | a Geometry |
geos::operation::distance::DistanceOp::DistanceOp | ( | const geom::Geometry & | g0, |
const geom::Geometry & | g1, | ||
double | terminateDistance | ||
) |
Constructs a DistanceOp that computes the distance and nearest points between the two specified geometries.
g0 | a Geometry |
g1 | a Geometry |
terminateDistance | the distance on which to terminate the search |
|
default |
|
private |
|
private |
Computes distance between facets (lines and points) of input geometries.
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
static |
Compute the distance between the nearest points of two geometries.
g0 | a geom::Geometry |
g1 | another geom::Geometry |
IllegalArgumentException | if either input geometry is null |
|
static |
double geos::operation::distance::DistanceOp::distance | ( | ) |
Report the distance between the closest points on the input geometries.
|
static |
Test whether two geometries lie within a given distance of each other.
g0 | a geom::Geometry |
g1 | another geom::Geometry |
distance | the distance to test |
|
static |
Compute the the nearest points of two geometries.
The points are presented in the same order as the input Geometries.
g0 | a geom::Geometry |
g1 | another geom::Geometry |
std::unique_ptr<geom::CoordinateSequence> geos::operation::distance::DistanceOp::nearestPoints | ( | ) |
Report the coordinates of the nearest points in the input geometries. The points are presented in the same order as the input Geometries.
|
private |
|
private |
Definition at line 178 of file DistanceOp.h.
|
private |
Definition at line 171 of file DistanceOp.h.
|
private |
Definition at line 177 of file DistanceOp.h.
|
private |
Definition at line 176 of file DistanceOp.h.
|
private |
Definition at line 175 of file DistanceOp.h.
|
private |
Definition at line 172 of file DistanceOp.h.