GEOS
3.9.0dev

Represents a directed graph which is embeddable in a planar surface. More...
#include <PlanarGraph.h>
Public Member Functions  
PlanarGraph (const NodeFactory &nodeFact)  
virtual std::vector< Edge * > ::iterator  getEdgeIterator () 
virtual std::vector< EdgeEnd * > *  getEdgeEnds () 
virtual bool  isBoundaryNode (int geomIndex, const geom::Coordinate &coord) 
virtual void  add (EdgeEnd *e) 
virtual NodeMap::iterator  getNodeIterator () 
virtual void  getNodes (std::vector< Node * > &) 
virtual Node *  addNode (Node *node) 
virtual Node *  addNode (const geom::Coordinate &coord) 
virtual Node *  find (geom::Coordinate &coord) 
virtual 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.  
virtual void  linkResultDirectedEdges () 
virtual void  linkAllDirectedEdges () 
virtual EdgeEnd *  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) More...  
virtual Edge *  findEdge (const geom::Coordinate &p0, const geom::Coordinate &p1) 
Returns the edge whose first two coordinates are p0 and p1. More...  
virtual Edge *  findEdgeInSameDirection (const geom::Coordinate &p0, const geom::Coordinate &p1) 
Returns the edge which starts at p0 and whose first segment is parallel to p1. More...  
virtual std::string  printEdges () 
virtual 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  
virtual void  insertEdge (Edge *e) 
Protected Attributes  
std::vector< Edge * > *  edges 
NodeMap *  nodes 
std::vector< EdgeEnd * > *  edgeEndList 
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 selfintersection be a vertex. Thus to obtain a correct topology graph, Geometry objects must be selfnoded before constructing their graphs.
Two fundamental operations are supported by topology graphs:

virtual 

virtual 
Returns the edge whose first two coordinates are p0 and p1.
null
if the edge was not found Returns the EdgeEnd which has edge e as its base edge (MD 18 Feb 2002  this should return a pair of edges)
null
if the edge was not found

virtual 
Returns the edge which starts at p0 and whose first segment is parallel to p1.
null
if the edge was not found

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