22 #ifndef GEOS_GEOMGRAPH_GEOMETRYGRAPH_H
23 #define GEOS_GEOMGRAPH_GEOMETRYGRAPH_H
25 #include <geos/export.h>
30 #include <geos/geom/Coordinate.h>
31 #include <geos/geom/CoordinateSequence.h>
32 #include <geos/geomgraph/PlanarGraph.h>
33 #include <geos/geom/LineString.h>
35 #include <geos/inline.h>
39 #pragma warning(disable: 4251) // warning C4251: needs to have dll-interface to be used by clients of class
49 class GeometryCollection;
53 class LineIntersector;
54 class BoundaryNodeRule;
60 class SegmentIntersector;
61 class EdgeSetIntersector;
74 using PlanarGraph::add;
90 std::map<const geom::LineString*, Edge*> lineEdgeMap;
96 bool useBoundaryDeterminationRule;
107 std::auto_ptr< geom::CoordinateSequence > boundaryPoints;
109 std::auto_ptr< std::vector<Node*> > boundaryNodes;
111 bool hasTooFewPointsVar;
116 index::EdgeSetIntersector* createEdgeSetIntersector();
126 int cwLeft,
int cwRight);
144 void addSelfIntersectionNodes(
int argIndex);
153 void addSelfIntersectionNode(
int argIndex,
162 static bool isInBoundary(
int boundaryCount);
164 static int determineBoundary(
int boundaryCount);
166 static int determineBoundary(
183 std::vector<Node*>* getBoundaryNodes();
185 void getBoundaryNodes(std::vector<Node*>&bdyNodes);
192 void computeSplitEdges(std::vector<Edge*> *edgelist);
194 void addEdge(
Edge *e);
213 index::SegmentIntersector* computeSelfNodes(
215 bool computeRingSelfNodes);
219 index::SegmentIntersector* computeSelfNodes(
221 bool computeRingSelfNodes);
223 index::SegmentIntersector* computeEdgeIntersections(
GeometryGraph *g,
226 std::vector<Edge*> *getEdges();
228 bool hasTooFewPoints();
233 {
return boundaryNodeRule; }
246 # include "geos/geomgraph/GeometryGraph.inl"
249 #endif // ifndef GEOS_GEOMGRAPH_GEOMETRYGRAPH_H
Coordinate is the lightweight class used to store coordinates.
Definition: Coordinate.h:60
Represents a directed graph which is embeddable in a planar surface.
Definition: geomgraph/PlanarGraph.h:75
Definition: GeometryGraph.h:72
Basic implementation of Geometry, constructed and destructed by GeometryFactory.
Definition: Geometry.h:167
Definition: LineString.h:70
A LineIntersector is an algorithm that can both test whether two line segments intersect and compute ...
Definition: LineIntersector.h:49
Represents a linear polygon, which may include holes.
Definition: Polygon.h:66
Definition: BoundaryNodeRule.h:50
Represents a collection of heterogeneous Geometry objects.
Definition: GeometryCollection.h:56
virtual Edge * findEdge(const geom::Coordinate &p0, const geom::Coordinate &p1)
Returns the edge whose first two coordinates are p0 and p1.
Models an OGC SFS LinearRing.
Definition: LinearRing.h:57
The internal representation of a list of coordinates inside a Geometry.
Definition: CoordinateSequence.h:59
Definition: geomgraph/Edge.h:66