#include <MaximalEdgeRing.h>
Definition at line 44 of file g/MaximalEdgeRing.h.
geos::operation::overlayng::MaximalEdgeRing::MaximalEdgeRing |
( |
OverlayEdge * |
e | ) |
|
|
inline |
void geos::operation::overlayng::MaximalEdgeRing::attachEdges |
( |
OverlayEdge * |
startEdge | ) |
|
|
private |
std::vector<std::unique_ptr<OverlayEdgeRing> > geos::operation::overlayng::MaximalEdgeRing::buildMinimalRings |
( |
const GeometryFactory * |
geometryFactory | ) |
|
Tests if an edge of the maximal edge ring is already linked into a minimal OverlayEdgeRing. If so, this node has already been processed earlier in the maximal edgering linking scan.
- Parameters
-
edge | an edge of a maximal edgering |
maxRing | the maximal edgering |
- Returns
- true if the edge has already been linked into a minimal edgering.
void geos::operation::overlayng::MaximalEdgeRing::linkMinimalRings |
( |
| ) |
|
|
private |
static void geos::operation::overlayng::MaximalEdgeRing::linkMinRingEdgesAtNode |
( |
OverlayEdge * |
nodeEdge, |
|
|
MaximalEdgeRing * |
maxRing |
|
) |
| |
|
staticprivate |
Links the edges of a MaximalEdgeRing around this node into minimal edge rings (OverlayEdgeRings). Minimal ring edges are linked in the opposite orientation (CW) to the maximal ring. This changes self-touching rings into a two or more separate rings, as per the OGC SFS polygon topology semantics. This relinking must be done to each max ring separately, rather than all the node result edges, since there may be more than one max ring incident at the node.
- Parameters
-
nodeEdge | an edge originating at this node |
maxRing | the maximal ring to link |
static void geos::operation::overlayng::MaximalEdgeRing::linkResultAreaMaxRingAtNode |
( |
OverlayEdge * |
nodeEdge | ) |
|
|
static |
Traverses the star of edges originating at a node and links consecutive result edges together into maximal edge rings. To link two edges the resultNextMax< pointer for an incoming< result edge is set to the next outgoing result edge.
Edges are linked when:
- they belong to an area (i.e. they have sides)
- they are marked as being in the result
Edges are linked in CCW order (which is the order they are linked in the underlying graph). This means that rings have their face on the Right (in other words, the topological location of the face is given by the RHS label of the DirectedEdge). This produces rings with CW orientation.
PRECONDITIONS:
- This edge is in the result
- This edge is not yet linked
- The edge and its sym are NOT both marked as being in the result
std::ostream& operator<< |
( |
std::ostream & |
os, |
|
|
const MaximalEdgeRing & |
mer |
|
) |
| |
|
friend |
OverlayEdge* geos::operation::overlayng::MaximalEdgeRing::startEdge |
|
private |
constexpr int geos::operation::overlayng::MaximalEdgeRing::STATE_FIND_INCOMING = 1 |
|
staticprivate |
constexpr int geos::operation::overlayng::MaximalEdgeRing::STATE_LINK_OUTGOING = 2 |
|
staticprivate |
The documentation for this class was generated from the following file: