22 #ifndef GEOS_GEOMGRAPH_GEOMETRYGRAPH_H 23 #define GEOS_GEOMGRAPH_GEOMETRYGRAPH_H 27 #include <unordered_map> 41 #pragma warning(disable: 4251) // warning C4251: needs to have dll-interface to be used by clients of class 51 class GeometryCollection;
56 class LineIntersector;
57 class BoundaryNodeRule;
63 class EdgeSetIntersector;
75 using PlanarGraph::add;
76 using PlanarGraph::findEdge;
90 std::unordered_map<const geom::LineString*, Edge*>
lineEdgeMap;
144 void addSelfIntersectionNodes(
int argIndex);
153 void addSelfIntersectionNode(
int argIndex,
162 static bool isInBoundary(
int boundaryCount);
183 std::vector<Node*>* getBoundaryNodes();
185 void getBoundaryNodes(std::vector<Node*>& bdyNodes);
192 void computeSplitEdges(std::vector<Edge*>* edgelist);
194 void addEdge(
Edge* e);
212 std::unique_ptr<index::SegmentIntersector>
215 bool computeRingSelfNodes,
218 return computeSelfNodes(*li, computeRingSelfNodes, env);
221 std::unique_ptr<index::SegmentIntersector>
224 bool computeRingSelfNodes,
225 bool isDoneIfProperInt,
228 return computeSelfNodes(*li, computeRingSelfNodes, isDoneIfProperInt, env);
233 std::unique_ptr<index::SegmentIntersector> computeSelfNodes(
237 std::unique_ptr<index::SegmentIntersector> computeSelfNodes(
239 bool computeRingSelfNodes,
bool isDoneIfProperInt,
const geom::Envelope* env =
nullptr);
241 std::unique_ptr<index::SegmentIntersector> computeEdgeIntersections(
GeometryGraph* g,
245 std::vector<Edge*>* getEdges();
247 bool hasTooFewPoints();
254 return boundaryNodeRule;
268 # include "geos/geomgraph/GeometryGraph.inl" 271 #endif // ifndef GEOS_GEOMGRAPH_GEOMETRYGRAPH_H std::unique_ptr< geom::CoordinateSequence > boundaryPoints
Cache for fast responses to getBoundaryPoints.
An Envelope defines a rectangulare region of the 2D coordinate plane.
const geom::Geometry * parentGeom
const algorithm::BoundaryNodeRule & getBoundaryNodeRule() const
Coordinate is the lightweight class used to store coordinates.
Represents a directed graph which is embeddable in a planar surface.
A GeometryGraph is a graph that models a given Geometry.
std::unique_ptr< std::vector< Node * > > boundaryNodes
Basic implementation of Geometry, constructed and destructed by GeometryFactory.
geom::Coordinate invalidPoint
A LineIntersector is an algorithm that can both test whether two line segments intersect and compute ...
Represents a linear polygon, which may include holes.
const algorithm::BoundaryNodeRule & boundaryNodeRule
An EdgeSetIntersector computes all the intersections between the edges in the set.
An interface for rules which determine whether node points which are in boundaries of lineal geometry...
bool useBoundaryDeterminationRule
Location
Constants representing the location of a point relative to a geometry.
Represents a collection of heterogeneous Geometry objects.
Basic namespace for all GEOS functionalities.
Models an OGC SFS LinearRing. A LinearRing is a LineString which is both closed and simple...
std::unique_ptr< index::SegmentIntersector > computeSelfNodes(algorithm::LineIntersector *li, bool computeRingSelfNodes, bool isDoneIfProperInt, const geom::Envelope *env=nullptr)
The internal representation of a list of coordinates inside a Geometry.
std::unordered_map< const geom::LineString *, Edge * > lineEdgeMap
std::unique_ptr< index::SegmentIntersector > computeSelfNodes(algorithm::LineIntersector *li, bool computeRingSelfNodes, const geom::Envelope *env=nullptr)
Compute self-nodes, taking advantage of the Geometry type to minimize the number of intersection test...