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) | |
geomgraph::Label * | getLabel () |
std::vector < geomgraph::EdgeEnd * > * | getEdgeEnds () |
void | insert (geomgraph::EdgeEnd *e) |
void | computeLabel (const algorithm::BoundaryNodeRule &bnr) |
void | updateIM (geom::IntersectionMatrix *im) |
std::string | print () |
Protected Member Functions | |
void | computeLabelOn (int geomIndex, const algorithm::BoundaryNodeRule &boundaryNodeRule) |
void | computeLabelSides (int geomIndex) |
void | computeLabelSide (int geomIndex, int side) |
Protected Attributes | |
std::vector < geomgraph::EdgeEnd * > * | edgeEnds |
A collection of geomgraph::EdgeEnd objects which originate at the same point and have the same direction.
void geos::operation::relate::EdgeEndBundle::computeLabelOn | ( | int | geomIndex, | |
const algorithm::BoundaryNodeRule & | boundaryNodeRule | |||
) | [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 precendence.
These observations result in the following rules for computing the ON location: