17#include <geos/export.h>
18#include <geos/geom/Location.h>
19#include <geos/operation/overlayng/OverlayGraph.h>
44class GEOS_DLL OverlayLabeller {
50 InputGeometry* inputGeometry;
51 std::vector<OverlayEdge*>& edges;
56 static OverlayEdge* findPropagationStartEdge(OverlayEdge* nodeEdge, uint8_t geomIndex);
83 void labelCollapsedEdges();
84 static void labelCollapsedEdge(OverlayEdge* edge, uint8_t geomIndex);
91 void labelConnectedLinearEdges();
92 void propagateLinearLocations(uint8_t geomIndex);
93 static void propagateLinearLocationAtNode(OverlayEdge* eNode, uint8_t geomIndex,
bool isInputLine, std::deque<OverlayEdge*>& edgeStack);
100 static std::vector<OverlayEdge*> findLinearEdgesWithLocation(
const std::vector<OverlayEdge *> &edges, uint8_t geomIndex);
116 void labelDisconnectedEdges();
126 void labelDisconnectedEdge(OverlayEdge* edge, uint8_t geomIndex);
150 geom::Location locateEdgeBothEnds(uint8_t geomIndex, OverlayEdge* edge);
157 void labelAreaNodeEdges(std::vector<OverlayEdge*>& nodes);
163 OverlayLabeller(OverlayGraph* p_graph, InputGeometry* p_inputGeometry)
165 , inputGeometry(p_inputGeometry)
166 , edges(p_graph->getEdges())
172 void computeLabelling();
179 void propagateAreaLocations(OverlayEdge* nodeEdge, uint8_t geomIndex);
181 void markResultAreaEdges(
int overlayOpCode);
190 static void markInResultArea(OverlayEdge* e,
int overlayOpCode);
198 void unmarkDuplicateEdgesFromResultArea();
Coordinate is the lightweight class used to store coordinates.
Definition: Coordinate.h:58
Location
Constants representing the location of a point relative to a geometry.
Definition: Location.h:32
Basic namespace for all GEOS functionalities.
Definition: geos.h:39