GEOS 3.6.2
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

Public Member Functions

 EdgeEndBundle (geomgraph::EdgeEnd *e)
std::vector< geomgraph::EdgeEnd * > * getEdgeEnds ()
void insert (geomgraph::EdgeEnd *e)
void computeLabel (const algorithm::BoundaryNodeRule &bnr)
void updateIM (geom::IntersectionMatrix &im)
 Update the IM with the contribution for the computed label for the EdgeStubs.
std::string print ()
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)
EdgegetEdge ()
LabelgetLabel ()
const LabelgetLabel () const
virtual geom::CoordinategetCoordinate ()
const geom::CoordinategetCoordinate () const
virtual geom::CoordinategetDirectedCoordinate ()
virtual int getQuadrant ()
virtual double getDx ()
virtual double getDy ()
virtual void setNode (Node *newNode)
virtual NodegetNode ()
virtual int compareTo (const EdgeEnd *e) const
virtual int compareDirection (const EdgeEnd *e) const
virtual std::string print () const

Protected Member Functions

void computeLabelOn (int geomIndex, const algorithm::BoundaryNodeRule &boundaryNodeRule)
void computeLabelSides (int geomIndex)
void computeLabelSide (int geomIndex, int side)
Protected Member Functions inherited from geos::geomgraph::EdgeEnd
 EdgeEnd (Edge *newEdge)
virtual void init (const geom::Coordinate &newP0, const geom::Coordinate &newP1)

Protected Attributes

std::vector< geomgraph::EdgeEnd * > * edgeEnds
Protected Attributes inherited from geos::geomgraph::EdgeEnd
Edgeedge
Label label

Detailed Description

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

Member Function Documentation

◆ computeLabel()

void geos::operation::relate::EdgeEndBundle::computeLabel ( const algorithm::BoundaryNodeRule & bnr)
virtual

Reimplemented from geos::geomgraph::EdgeEnd.

◆ computeLabelOn()

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: