GEOS  3.9.1dev
Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
geos::geomgraph::DirectedEdgeStar Class Reference

A DirectedEdgeStar is an ordered list of outgoing DirectedEdges around a node. More...

#include <DirectedEdgeStar.h>

Inheritance diagram for geos::geomgraph::DirectedEdgeStar:
[legend]
Collaboration diagram for geos::geomgraph::DirectedEdgeStar:
[legend]

Public Member Functions

 DirectedEdgeStar ()
 
 ~DirectedEdgeStar () override=default
 
void insert (EdgeEnd *ee) override
 Insert a directed edge in the list. More...
 
LabelgetLabel ()
 
int getOutgoingDegree ()
 
int getOutgoingDegree (EdgeRing *er)
 
DirectedEdgegetRightmostEdge ()
 
void computeLabelling (std::vector< GeometryGraph * > *geom) override
 Compute the labelling for all dirEdges in this star, as well as the overall labelling. More...
 
void mergeSymLabels ()
 For each dirEdge in the star, merge the label from the sym dirEdge into the label. More...
 
void updateLabelling (const Label &nodeLabel)
 Update incomplete dirEdge labels from the labelling for the node. More...
 
void linkResultDirectedEdges ()
 Traverse the star of DirectedEdges, linking the included edges together. More...
 
void linkMinimalDirectedEdges (EdgeRing *er)
 
void linkAllDirectedEdges ()
 
void findCoveredLineEdges ()
 Traverse the star of edges, maintaing the current location in the result area at this node (if any). More...
 
void computeDepths (DirectedEdge *de)
 Compute the DirectedEdge depths for a subsequence of the edge array. More...
 
std::string print () const override
 
- Public Member Functions inherited from geos::geomgraph::EdgeEndStar
 EdgeEndStar ()
 
virtual ~EdgeEndStar ()
 
virtual geom::CoordinategetCoordinate ()
 
const geom::CoordinategetCoordinate () const
 
virtual std::size_t getDegree ()
 
virtual iterator begin ()
 
virtual iterator end ()
 
virtual reverse_iterator rbegin ()
 
virtual reverse_iterator rend ()
 
virtual const_iterator begin () const
 
virtual const_iterator end () const
 
virtual containergetEdges ()
 
virtual EdgeEndgetNextCW (EdgeEnd *ee)
 
virtual bool isAreaLabelsConsistent (const GeometryGraph &geomGraph)
 
virtual void propagateSideLabels (uint32_t geomIndex)
 
virtual iterator find (EdgeEnd *eSearch)
 

Private Types

enum  { SCANNING_FOR_INCOMING = 1, LINKING_TO_OUTGOING }
 States for linResultDirectedEdges. More...
 

Private Member Functions

const std::vector< DirectedEdge * > & getResultAreaEdges ()
 Returned vector is owned by DirectedEdgeStar object, but lazily created. More...
 
int computeDepths (EdgeEndStar::iterator startIt, EdgeEndStar::iterator endIt, int startDepth)
 

Private Attributes

std::vector< DirectedEdge * > resultAreaEdgeList
 
Label label
 
bool resultAreaEdgesComputed
 

Additional Inherited Members

- Public Types inherited from geos::geomgraph::EdgeEndStar
typedef std::set< EdgeEnd *, EdgeEndLTcontainer
 
typedef container::iterator iterator
 
typedef container::const_iterator const_iterator
 
typedef container::reverse_iterator reverse_iterator
 
- Protected Member Functions inherited from geos::geomgraph::EdgeEndStar
virtual void insertEdgeEnd (EdgeEnd *e)
 Insert an EdgeEnd into the map. More...
 
- Protected Attributes inherited from geos::geomgraph::EdgeEndStar
EdgeEndStar::container edgeMap
 A map which maintains the edges in sorted order around the node. More...
 

Detailed Description

A DirectedEdgeStar is an ordered list of outgoing DirectedEdges around a node.

It supports labelling the edges as well as linking the edges to form both MaximalEdgeRings and MinimalEdgeRings.

Definition at line 55 of file geomgraph/DirectedEdgeStar.h.

Member Enumeration Documentation

anonymous enum
private

States for linResultDirectedEdges.

Enumerator
SCANNING_FOR_INCOMING 
LINKING_TO_OUTGOING 

Definition at line 153 of file geomgraph/DirectedEdgeStar.h.

Constructor & Destructor Documentation

geos::geomgraph::DirectedEdgeStar::DirectedEdgeStar ( )
inline

Definition at line 59 of file geomgraph/DirectedEdgeStar.h.

geos::geomgraph::DirectedEdgeStar::~DirectedEdgeStar ( )
overridedefault

Member Function Documentation

void geos::geomgraph::DirectedEdgeStar::computeDepths ( DirectedEdge de)

Compute the DirectedEdge depths for a subsequence of the edge array.

int geos::geomgraph::DirectedEdgeStar::computeDepths ( EdgeEndStar::iterator  startIt,
EdgeEndStar::iterator  endIt,
int  startDepth 
)
private
void geos::geomgraph::DirectedEdgeStar::computeLabelling ( std::vector< GeometryGraph * > *  geom)
overridevirtual

Compute the labelling for all dirEdges in this star, as well as the overall labelling.

Reimplemented from geos::geomgraph::EdgeEndStar.

void geos::geomgraph::DirectedEdgeStar::findCoveredLineEdges ( )

Traverse the star of edges, maintaing the current location in the result area at this node (if any).

If any L edges are found in the interior of the result, mark them as covered.

Label& geos::geomgraph::DirectedEdgeStar::getLabel ( )
inline

Definition at line 72 of file geomgraph/DirectedEdgeStar.h.

int geos::geomgraph::DirectedEdgeStar::getOutgoingDegree ( )
int geos::geomgraph::DirectedEdgeStar::getOutgoingDegree ( EdgeRing er)
const std::vector<DirectedEdge*>& geos::geomgraph::DirectedEdgeStar::getResultAreaEdges ( )
private

Returned vector is owned by DirectedEdgeStar object, but lazily created.

DirectedEdge* geos::geomgraph::DirectedEdgeStar::getRightmostEdge ( )
void geos::geomgraph::DirectedEdgeStar::insert ( EdgeEnd ee)
overridevirtual

Insert a directed edge in the list.

Implements geos::geomgraph::EdgeEndStar.

void geos::geomgraph::DirectedEdgeStar::linkAllDirectedEdges ( )
void geos::geomgraph::DirectedEdgeStar::linkMinimalDirectedEdges ( EdgeRing er)
void geos::geomgraph::DirectedEdgeStar::linkResultDirectedEdges ( )

Traverse the star of DirectedEdges, linking the included edges together.

To link two dirEdges, the next pointer for an incoming dirEdge is set to the next outgoing edge.

DirEdges are only linked if:

  • they belong to an area (i.e. they have sides)
  • they are marked as being in the result

Edges are linked in CCW order (the order they are stored). This means that rings have their face on the Right (in other words, the topological location of the face is given by the RHS label of the DirectedEdge)

PRECONDITION: No pair of dirEdges are both marked as being in the result

Referenced by geos::geomgraph::PlanarGraph::linkResultDirectedEdges().

Here is the caller graph for this function:

void geos::geomgraph::DirectedEdgeStar::mergeSymLabels ( )

For each dirEdge in the star, merge the label from the sym dirEdge into the label.

std::string geos::geomgraph::DirectedEdgeStar::print ( ) const
overridevirtual

Reimplemented from geos::geomgraph::EdgeEndStar.

void geos::geomgraph::DirectedEdgeStar::updateLabelling ( const Label nodeLabel)

Update incomplete dirEdge labels from the labelling for the node.

Member Data Documentation

Label geos::geomgraph::DirectedEdgeStar::label
private

Definition at line 142 of file geomgraph/DirectedEdgeStar.h.

std::vector<DirectedEdge*> geos::geomgraph::DirectedEdgeStar::resultAreaEdgeList
private

A list of all outgoing edges in the result, in CCW order

Definition at line 140 of file geomgraph/DirectedEdgeStar.h.

bool geos::geomgraph::DirectedEdgeStar::resultAreaEdgesComputed
private

Definition at line 144 of file geomgraph/DirectedEdgeStar.h.


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