GEOS  3.9.0dev
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
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:

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

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
Label label

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 

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: