Public Member Functions | Protected Member Functions | Protected Attributes

geos::operation::relate::EdgeEndBundle Class Reference

A collection of geomgraph::EdgeEnd objects which originate at the same point and have the same direction. More...

#include <EdgeEndBundle.h>

Inheritance diagram for geos::operation::relate::EdgeEndBundle:
geos::geomgraph::EdgeEnd

List of all members.

Public Member Functions

 EdgeEndBundle (geomgraph::EdgeEnd *e)
geomgraph::LabelgetLabel ()
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

Detailed Description

A collection of geomgraph::EdgeEnd objects which originate at the same point and have the same direction.


Member Function Documentation

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:

  • if there are an odd number of Bdy edges, the attribute is Bdy
  • if there are an even number >= 2 of Bdy edges, the attribute is Int
  • if there are any Int edges, the attribute is Int
  • otherwise, the attribute is NULL.

The documentation for this class was generated from the following file: