GEOS  3.13.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:
geos::geomgraph::EdgeEnd

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 (uint8_t geomIndex, const algorithm::BoundaryNodeRule &boundaryNodeRule)
 
void computeLabelSides (uint8_t geomIndex)
 
void computeLabelSide (uint8_t geomIndex, uint32_t 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

◆ computeLabelOn()

void geos::operation::relate::EdgeEndBundle::computeLabelOn ( uint8_t  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: