GEOS
3.14.0dev
|
A collection of geomgraph::EdgeEnd objects which originate at the same point and have the same direction. More...
#include <EdgeEndBundle.h>
Public Member Functions | |
EdgeEndBundle (geomgraph::EdgeEnd *e) | |
const std::vector< geomgraph::EdgeEnd * > & | getEdgeEnds () |
void | insert (geomgraph::EdgeEnd *e) |
void | computeLabel (const algorithm::BoundaryNodeRule &bnr) override |
void | updateIM (geom::IntersectionMatrix &im) |
Update the IM with the contribution for the computed label for the EdgeStubs. | |
std::string | print () const override |
Public Member Functions inherited from geos::geomgraph::EdgeEnd | |
EdgeEnd (Edge *newEdge, const geom::Coordinate &newP0, const geom::Coordinate &newP1, const Label &newLabel) | |
EdgeEnd (Edge *newEdge, const geom::Coordinate &newP0, const geom::Coordinate &newP1) | |
Edge * | getEdge () |
Label & | getLabel () |
const Label & | getLabel () const |
geom::Coordinate & | getCoordinate () |
const geom::Coordinate & | getCoordinate () const |
geom::Coordinate & | getDirectedCoordinate () |
int | getQuadrant () |
double | getDx () |
double | getDy () |
void | setNode (Node *newNode) |
Node * | getNode () |
int | compareTo (const EdgeEnd *e) const |
int | compareDirection (const EdgeEnd *e) const |
Protected Member Functions | |
void | computeLabelOn (uint8_t geomIndex, const algorithm::BoundaryNodeRule &boundaryNodeRule) |
void | computeLabelSides (uint8_t geomIndex) |
void | computeLabelSide (uint8_t geomIndex, uint32_t side) |
Protected Member Functions inherited from geos::geomgraph::EdgeEnd | |
EdgeEnd (Edge *newEdge) | |
void | init (const geom::Coordinate &newP0, const geom::Coordinate &newP1) |
Protected Attributes | |
std::vector< geomgraph::EdgeEnd * > | edgeEnds |
Protected Attributes inherited from geos::geomgraph::EdgeEnd | |
Edge * | edge |
Label | label |
A collection of geomgraph::EdgeEnd objects which originate at the same point and have the same direction.
|
protected |
Compute the overall ON location for the list of EdgeStubs.
(This is essentially equivalent to computing the self-overlay of a single Geometry)
edgeStubs can be either on the boundary (eg Polygon edge) OR in the interior (e.g. segment of a LineString) of their parent Geometry.
In addition, GeometryCollections use a algorithm::BoundaryNodeRule to determine whether a segment is on the boundary or not.
Finally, in GeometryCollections it can occur that an edge is both on the boundary and in the interior (e.g. a LineString segment lying on top of a Polygon edge.) In this case the Boundary is given precedence.
These observations result in the following rules for computing the ON location: