GEOS  3.14.0dev
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
geos::geomgraph::PlanarGraph Class Reference

Represents a directed graph which is embeddable in a planar surface. More...

#include <PlanarGraph.h>

Inheritance diagram for geos::geomgraph::PlanarGraph:
geos::geomgraph::GeometryGraph

Public Member Functions

 PlanarGraph (const NodeFactory &nodeFact)
 
std::vector< Edge * >::iterator getEdgeIterator ()
 
std::vector< EdgeEnd * > * getEdgeEnds ()
 
bool isBoundaryNode (uint8_t geomIndex, const geom::Coordinate &coord)
 
void add (EdgeEnd *e)
 
NodeMap::iterator getNodeIterator ()
 
void getNodes (std::vector< Node * > &)
 
NodeaddNode (Node *node)
 
NodeaddNode (const geom::Coordinate &coord)
 
Nodefind (geom::Coordinate &coord)
 
void addEdges (const std::vector< Edge * > &edgesToAdd)
 Add a set of edges to the graph. For each edge two DirectedEdges will be created. DirectedEdges are NOT linked by this method.
 
void linkResultDirectedEdges ()
 
void linkAllDirectedEdges ()
 
EdgeEndfindEdgeEnd (Edge *e)
 Returns the EdgeEnd which has edge e as its base edge (MD 18 Feb 2002 - this should return a pair of edges) More...
 
EdgefindEdge (const geom::Coordinate &p0, const geom::Coordinate &p1)
 Returns the edge whose first two coordinates are p0 and p1. More...
 
EdgefindEdgeInSameDirection (const geom::Coordinate &p0, const geom::Coordinate &p1)
 Returns the edge which starts at p0 and whose first segment is parallel to p1. More...
 
std::string printEdges ()
 
NodeMap * getNodeMap ()
 

Static Public Member Functions

template<typename It >
static void linkResultDirectedEdges (It first, It last)
 For nodes in the collection (first..last), link the DirectedEdges at the node that are in the result. More...
 

Protected Member Functions

void insertEdge (Edge *e)
 

Protected Attributes

std::vector< Edge * > * edges
 
NodeMap * nodes
 
std::vector< EdgeEnd * > * edgeEndList
 

Detailed Description

Represents a directed graph which is embeddable in a planar surface.

The computation of the IntersectionMatrix relies on the use of a structure called a "topology graph". The topology graph contains nodes and edges corresponding to the nodes and line segments of a Geometry. Each node and edge in the graph is labeled with its topological location relative to the source geometry.

Note that there is no requirement that points of self-intersection be a vertex. Thus to obtain a correct topology graph, Geometry objects must be self-noded before constructing their graphs.

Two fundamental operations are supported by topology graphs:

Member Function Documentation

◆ find()

Node* geos::geomgraph::PlanarGraph::find ( geom::Coordinate coord)
Returns
the node if found; null otherwise

◆ findEdge()

Edge* geos::geomgraph::PlanarGraph::findEdge ( const geom::Coordinate p0,
const geom::Coordinate p1 
)

Returns the edge whose first two coordinates are p0 and p1.

Returns
the edge, if found null if the edge was not found

◆ findEdgeEnd()

EdgeEnd* geos::geomgraph::PlanarGraph::findEdgeEnd ( Edge e)

Returns the EdgeEnd which has edge e as its base edge (MD 18 Feb 2002 - this should return a pair of edges)

Returns
the edge, if found null if the edge was not found

◆ findEdgeInSameDirection()

Edge* geos::geomgraph::PlanarGraph::findEdgeInSameDirection ( const geom::Coordinate p0,
const geom::Coordinate p1 
)

Returns the edge which starts at p0 and whose first segment is parallel to p1.

Returns
the edge, if found null if the edge was not found

◆ linkResultDirectedEdges()

template<typename It >
static void geos::geomgraph::PlanarGraph::linkResultDirectedEdges ( It  first,
It  last 
)
inlinestatic

For nodes in the collection (first..last), link the DirectedEdges at the node that are in the result.

This allows clients to link only a subset of nodes in the graph, for efficiency (because they know that only a subset is of interest).

References geos::geomgraph::DirectedEdgeStar::linkResultDirectedEdges().


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