GEOS 3.13.1
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
geom::CoordinategetCoordinate ()
const geom::CoordinategetCoordinate () const
geom::CoordinategetDirectedCoordinate ()
int getQuadrant ()
double getDx ()
double getDy ()
void setNode (Node *newNode)
NodegetNode ()
int compareTo (const EdgeEnd *e) const
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)
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)
overridevirtual

Reimplemented from geos::geomgraph::EdgeEnd.

◆ 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 precedence.

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.

◆ print()

std::string geos::operation::relate::EdgeEndBundle::print ( ) const
overridevirtual

Reimplemented from geos::geomgraph::EdgeEnd.


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