# 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:

List of all members.

## 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

## 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:

- EdgeEndBundle.h