20 #ifndef GEOS_OP_DISTANCE_DISTANCEOP_H
21 #define GEOS_OP_DISTANCE_DISTANCEOP_H
23 #include <geos/export.h>
25 #include <geos/algorithm/PointLocator.h>
26 #include <geos/operation/distance/GeometryLocation.h>
27 #include <geos/geom/CoordinateSequence.h>
35 #pragma warning(disable: 4251)
145 double terminateDistance);
169 std::array<geom::Geometry const*, 2> geom;
170 double terminateDistance;
174 std::array<std::unique_ptr<GeometryLocation>, 2> minDistanceLocation;
176 bool computed =
false;
178 void updateMinDistance(std::array<std::unique_ptr<GeometryLocation>, 2> & locGeom,
bool flip);
180 void computeMinDistance();
182 void computeContainmentDistance();
184 void computeInside(std::vector<std::unique_ptr<GeometryLocation>> & locs,
185 const std::vector<const geom::Polygon*>& polys,
186 std::array<std::unique_ptr<GeometryLocation>, 2> & locPtPoly);
188 void computeInside(std::unique_ptr<GeometryLocation> & ptLoc,
190 std::array<std::unique_ptr<GeometryLocation>, 2> & locPtPoly);
196 void computeFacetDistance();
198 void computeMinDistanceLines(
199 const std::vector<const geom::LineString*>& lines0,
200 const std::vector<const geom::LineString*>& lines1,
201 std::array<std::unique_ptr<GeometryLocation>, 2> & locGeom);
203 void computeMinDistancePoints(
204 const std::vector<const geom::Point*>& points0,
205 const std::vector<const geom::Point*>& points1,
206 std::array<std::unique_ptr<GeometryLocation>, 2> & locGeom);
208 void computeMinDistanceLinesPoints(
209 const std::vector<const geom::LineString*>& lines0,
210 const std::vector<const geom::Point*>& points1,
211 std::array<std::unique_ptr<GeometryLocation>, 2> & locGeom);
215 std::array<std::unique_ptr<GeometryLocation>, 2> & locGeom);
219 std::array<std::unique_ptr<GeometryLocation>, 2> & locGeom);
Computes the topological relationship (Location) of a single point to a Geometry.
Definition: PointLocator.h:57
Basic implementation of Geometry, constructed and destructed by GeometryFactory.
Definition: Geometry.h:188
Definition: LineString.h:68
Represents a linear polygon, which may include holes.
Definition: Polygon.h:64
Find two points on two geom::Geometrys which lie within a given distance, or else are the nearest poi...
Definition: DistanceOp.h:72
std::unique_ptr< geom::CoordinateSequence > nearestPoints()
static std::unique_ptr< geom::CoordinateSequence > nearestPoints(const geom::Geometry *g0, const geom::Geometry *g1)
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.
DistanceOp(const geom::Geometry &g0, const geom::Geometry &g1)
Constructs a DistanceOp that computes the distance and nearest points between the two specified geome...
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 geome...
static double distance(const geom::Geometry &g0, const geom::Geometry &g1)
Compute the distance between the nearest points of two geometries.
DistanceOp(const geom::Geometry *g0, const geom::Geometry *g1)
Basic namespace for all GEOS functionalities.
Definition: IndexedNestedRingTester.h:25