#include <PlanarGraph.h>
Inherited by geos::geomgraph::GeometryGraph.
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). | |
| virtual Edge * | findEdge (const geom::Coordinate &p0, const geom::Coordinate &p1) |
| Returns the edge whose first two coordinates are p0 and p1. | |
| 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. | |
| virtual std::string | printEdges () |
| virtual NodeMap * | getNodeMap () |
Static Public Member Functions | |
| static void | linkResultDirectedEdges (std::vector< Node * >::iterator start, std::vector< Node * >::iterator end) |
| For nodes in the vector, link the DirectedEdges at the node that are in the result. | |
Protected Member Functions | |
| virtual void | insertEdge (Edge *e) |
Protected Attributes | |
| std::vector< Edge * > * | edges |
| NodeMap * | nodes |
| std::vector< EdgeEnd * > * | edgeEndList |
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:
| static void geos::geomgraph::PlanarGraph::linkResultDirectedEdges | ( | std::vector< Node * >::iterator | start, | |
| std::vector< Node * >::iterator | end | |||
| ) | [static] |
For nodes in the vector, 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).
| virtual EdgeEnd* geos::geomgraph::PlanarGraph::findEdgeEnd | ( | Edge * | e | ) | [virtual] |
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 Edge* geos::geomgraph::PlanarGraph::findEdge | ( | const geom::Coordinate & | p0, | |
| const geom::Coordinate & | p1 | |||
| ) | [virtual] |
Returns the edge whose first two coordinates are p0 and p1.
null if the edge was not found | virtual Edge* geos::geomgraph::PlanarGraph::findEdgeInSameDirection | ( | const geom::Coordinate & | p0, | |
| const geom::Coordinate & | p1 | |||
| ) | [virtual] |
Returns the edge which starts at p0 and whose first segment is parallel to p1.
null if the edge was not found
1.5.4