GEOS
3.9.1dev
|
Represents a directed graph which is embeddable in a planar surface. More...
#include <PlanarGraph.h>
Public Member Functions | |
PlanarGraph (const NodeFactory &nodeFact) | |
PlanarGraph () | |
virtual | ~PlanarGraph () |
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. More... | |
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 |
Private Member Functions | |
bool | matchInSameDirection (const geom::Coordinate &p0, const geom::Coordinate &p1, const geom::Coordinate &ep0, const geom::Coordinate &ep1) |
The coordinate pairs match if they define line segments lying in the same direction. More... | |
PlanarGraph (const PlanarGraph &)=delete | |
PlanarGraph & | operator= (const PlanarGraph &)=delete |
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:
Definition at line 75 of file geomgraph/PlanarGraph.h.
geos::geomgraph::PlanarGraph::PlanarGraph | ( | const NodeFactory & | nodeFact | ) |
geos::geomgraph::PlanarGraph::PlanarGraph | ( | ) |
|
virtual |
|
privatedelete |
|
virtual |
|
virtual |
Add a set of edges to the graph. For each edge two DirectedEdges will be created. DirectedEdges are NOT linked by this method.
|
virtual |
|
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
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
protectedvirtual |
|
virtual |
|
virtual |
|
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).
Definition at line 88 of file geomgraph/PlanarGraph.h.
References geos::geomgraph::Node::getEdges(), and geos::geomgraph::DirectedEdgeStar::linkResultDirectedEdges().
|
virtual |
|
private |
The coordinate pairs match if they define line segments lying in the same direction.
E.g. the segments are parallel and in the same quadrant (as opposed to parallel and opposite!).
|
privatedelete |
|
virtual |
|
protected |
Definition at line 180 of file geomgraph/PlanarGraph.h.
|
protected |
Definition at line 176 of file geomgraph/PlanarGraph.h.
|
protected |
Definition at line 178 of file geomgraph/PlanarGraph.h.