<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <title>GEOS: geos::geomgraph::PlanarGraph Class Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="doxygen.css" rel="stylesheet" type="text/css"/> </head> <body> <!-- Generated by Doxygen 1.7.1 --> <div class="navigation" id="top"> <div class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="namespaces.html"><span>Namespaces</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li><a href="files.html"><span>Files</span></a></li> </ul> </div> <div class="tabs2"> <ul class="tablist"> <li><a href="annotated.html"><span>Class List</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class Members</span></a></li> </ul> </div> <div class="navpath"> <ul> <li><a class="el" href="namespacegeos.html">geos</a> </li> <li><a class="el" href="namespacegeos_1_1geomgraph.html">geomgraph</a> </li> <li><a class="el" href="classgeos_1_1geomgraph_1_1PlanarGraph.html">geos::geomgraph::PlanarGraph</a> </li> </ul> </div> </div> <div class="header"> <div class="summary"> <a href="#pub-methods">Public Member Functions</a> | <a href="#pub-static-methods">Static Public Member Functions</a> | <a href="#pro-methods">Protected Member Functions</a> | <a href="#pro-attribs">Protected Attributes</a> </div> <div class="headertitle"> <h1>geos::geomgraph::PlanarGraph Class Reference</h1> </div> </div> <div class="contents"> <!-- doxytag: class="geos::geomgraph::PlanarGraph" --> <p>Represents a directed graph which is embeddable in a planar surface. <a href="#_details">More...</a></p> <p><code>#include <<a class="el" href="geomgraph_2PlanarGraph_8h_source.html">PlanarGraph.h</a>></code></p> <p>Inherited by geos::geomgraph::GeometryGraph.</p> <p><a href="classgeos_1_1geomgraph_1_1PlanarGraph-members.html">List of all members.</a></p> <table class="memberdecls"> <tr><td colspan="2"><h2><a name="pub-methods"></a> Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acdbab93abb0dc25f6e6bb57bd08f4c74"></a><!-- doxytag: member="geos::geomgraph::PlanarGraph::PlanarGraph" ref="acdbab93abb0dc25f6e6bb57bd08f4c74" args="(const NodeFactory &nodeFact)" --> </td><td class="memItemRight" valign="bottom"><b>PlanarGraph</b> (const NodeFactory &nodeFact)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1ecd142ef6db53d77ba4e6470d6ef2b7"></a><!-- doxytag: member="geos::geomgraph::PlanarGraph::getEdgeIterator" ref="a1ecd142ef6db53d77ba4e6470d6ef2b7" args="()" --> virtual std::vector< Edge * ><br class="typebreak"/> ::iterator </td><td class="memItemRight" valign="bottom"><b>getEdgeIterator</b> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a45929a3eb0d796fb165182f6c4e889b9"></a><!-- doxytag: member="geos::geomgraph::PlanarGraph::getEdgeEnds" ref="a45929a3eb0d796fb165182f6c4e889b9" args="()" --> virtual std::vector< <a class="el" href="classgeos_1_1geomgraph_1_1EdgeEnd.html">EdgeEnd</a> * > * </td><td class="memItemRight" valign="bottom"><b>getEdgeEnds</b> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae6f0f27839caaadacfe2e343bb3b5859"></a><!-- doxytag: member="geos::geomgraph::PlanarGraph::isBoundaryNode" ref="ae6f0f27839caaadacfe2e343bb3b5859" args="(int geomIndex, const geom::Coordinate &coord)" --> virtual bool </td><td class="memItemRight" valign="bottom"><b>isBoundaryNode</b> (int geomIndex, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &coord)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aebd4ef91b37426f3e3d0e223985217a8"></a><!-- doxytag: member="geos::geomgraph::PlanarGraph::add" ref="aebd4ef91b37426f3e3d0e223985217a8" args="(EdgeEnd *e)" --> virtual void </td><td class="memItemRight" valign="bottom"><b>add</b> (<a class="el" href="classgeos_1_1geomgraph_1_1EdgeEnd.html">EdgeEnd</a> *e)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a26e6fce205d09645c7f42c9d9d9b1e7e"></a><!-- doxytag: member="geos::geomgraph::PlanarGraph::getNodeIterator" ref="a26e6fce205d09645c7f42c9d9d9b1e7e" args="()" --> virtual NodeMap::iterator </td><td class="memItemRight" valign="bottom"><b>getNodeIterator</b> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab55f783d90436cfc332e00352f08879a"></a><!-- doxytag: member="geos::geomgraph::PlanarGraph::getNodes" ref="ab55f783d90436cfc332e00352f08879a" args="(std::vector< Node * > &)" --> virtual void </td><td class="memItemRight" valign="bottom"><b>getNodes</b> (std::vector< Node * > &)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab95d27e28bde5acad29c90b06c435b07"></a><!-- doxytag: member="geos::geomgraph::PlanarGraph::addNode" ref="ab95d27e28bde5acad29c90b06c435b07" args="(Node *node)" --> virtual Node * </td><td class="memItemRight" valign="bottom"><b>addNode</b> (Node *node)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9042a61b5fe1f0c3c029c78da5602cc3"></a><!-- doxytag: member="geos::geomgraph::PlanarGraph::addNode" ref="a9042a61b5fe1f0c3c029c78da5602cc3" args="(const geom::Coordinate &coord)" --> virtual Node * </td><td class="memItemRight" valign="bottom"><b>addNode</b> (const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &coord)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual Node * </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1geomgraph_1_1PlanarGraph.html#ae0ae0635a8cf9b0a27e1ae6c963074f0">find</a> (<a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &coord)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ace4497331806c06a77a42e1e406e4244"></a><!-- doxytag: member="geos::geomgraph::PlanarGraph::addEdges" ref="ace4497331806c06a77a42e1e406e4244" args="(const std::vector< Edge * > &edgesToAdd)" --> virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1geomgraph_1_1PlanarGraph.html#ace4497331806c06a77a42e1e406e4244">addEdges</a> (const std::vector< Edge * > &edgesToAdd)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Add a set of edges to the graph. For each edge two DirectedEdges will be created. DirectedEdges are NOT linked by this method. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a26be5df2cae967c5739375ac17394821"></a><!-- doxytag: member="geos::geomgraph::PlanarGraph::linkResultDirectedEdges" ref="a26be5df2cae967c5739375ac17394821" args="()" --> virtual void </td><td class="memItemRight" valign="bottom"><b>linkResultDirectedEdges</b> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a31ee5909b6359ad60de9b1d6e69cc485"></a><!-- doxytag: member="geos::geomgraph::PlanarGraph::linkAllDirectedEdges" ref="a31ee5909b6359ad60de9b1d6e69cc485" args="()" --> virtual void </td><td class="memItemRight" valign="bottom"><b>linkAllDirectedEdges</b> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classgeos_1_1geomgraph_1_1EdgeEnd.html">EdgeEnd</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1geomgraph_1_1PlanarGraph.html#adef38fcf5bfe7e50cea21cd192102b0f">findEdgeEnd</a> (Edge *e)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the <a class="el" href="classgeos_1_1geomgraph_1_1EdgeEnd.html" title="Models the end of an edge incident on a node.">EdgeEnd</a> which has edge e as its base edge (MD 18 Feb 2002 - this should return a pair of edges). <a href="#adef38fcf5bfe7e50cea21cd192102b0f"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual Edge * </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1geomgraph_1_1PlanarGraph.html#a11f4d623bf8b2d02ac07f4f0c5bf5a68">findEdge</a> (const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &p0, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &p1)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the edge whose first two coordinates are p0 and p1. <a href="#a11f4d623bf8b2d02ac07f4f0c5bf5a68"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual Edge * </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1geomgraph_1_1PlanarGraph.html#a2157ecd5b89d1b9e4ddf369e7bb96b7b">findEdgeInSameDirection</a> (const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &p0, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &p1)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the edge which starts at p0 and whose first segment is parallel to p1. <a href="#a2157ecd5b89d1b9e4ddf369e7bb96b7b"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a099b5b053eb0ab7afa22c1e5e9f8794f"></a><!-- doxytag: member="geos::geomgraph::PlanarGraph::printEdges" ref="a099b5b053eb0ab7afa22c1e5e9f8794f" args="()" --> virtual std::string </td><td class="memItemRight" valign="bottom"><b>printEdges</b> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae274d285e2611fa37f1bc8eab74e645c"></a><!-- doxytag: member="geos::geomgraph::PlanarGraph::getNodeMap" ref="ae274d285e2611fa37f1bc8eab74e645c" args="()" --> virtual NodeMap * </td><td class="memItemRight" valign="bottom"><b>getNodeMap</b> ()</td></tr> <tr><td colspan="2"><h2><a name="pub-static-methods"></a> Static Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1geomgraph_1_1PlanarGraph.html#a5d13873aeab1d2ea991c34f78bcd6fc8">linkResultDirectedEdges</a> (std::vector< Node * >::iterator start, std::vector< Node * >::iterator end)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">For nodes in the vector, link the DirectedEdges at the node that are in the result. <a href="#a5d13873aeab1d2ea991c34f78bcd6fc8"></a><br/></td></tr> <tr><td colspan="2"><h2><a name="pro-methods"></a> Protected Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8a1446df0cdde2e7b589fd381ecd06e6"></a><!-- doxytag: member="geos::geomgraph::PlanarGraph::insertEdge" ref="a8a1446df0cdde2e7b589fd381ecd06e6" args="(Edge *e)" --> virtual void </td><td class="memItemRight" valign="bottom"><b>insertEdge</b> (Edge *e)</td></tr> <tr><td colspan="2"><h2><a name="pro-attribs"></a> Protected Attributes</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad3ecb348be80ecd85f0dcee548706127"></a><!-- doxytag: member="geos::geomgraph::PlanarGraph::edges" ref="ad3ecb348be80ecd85f0dcee548706127" args="" --> std::vector< Edge * > * </td><td class="memItemRight" valign="bottom"><b>edges</b></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a777c5bc3eb4a733c3d1653e73237ef2a"></a><!-- doxytag: member="geos::geomgraph::PlanarGraph::nodes" ref="a777c5bc3eb4a733c3d1653e73237ef2a" args="" --> NodeMap * </td><td class="memItemRight" valign="bottom"><b>nodes</b></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a61af6fb669274c0213387a7fe2f47470"></a><!-- doxytag: member="geos::geomgraph::PlanarGraph::edgeEndList" ref="a61af6fb669274c0213387a7fe2f47470" args="" --> std::vector< <a class="el" href="classgeos_1_1geomgraph_1_1EdgeEnd.html">EdgeEnd</a> * > * </td><td class="memItemRight" valign="bottom"><b>edgeEndList</b></td></tr> </table> <hr/><a name="_details"></a><h2>Detailed Description</h2> <p>Represents a directed graph which is embeddable in a planar surface. </p> <p>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.</p> <p>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.</p> <p>Two fundamental operations are supported by topology graphs:</p> <ul> <li>Computing the intersections between all the edges and nodes of a single graph</li> <li>Computing the intersections between the edges and nodes of two different graphs </li> </ul> <hr/><h2>Member Function Documentation</h2> <a class="anchor" id="ae0ae0635a8cf9b0a27e1ae6c963074f0"></a><!-- doxytag: member="geos::geomgraph::PlanarGraph::find" ref="ae0ae0635a8cf9b0a27e1ae6c963074f0" args="(geom::Coordinate &coord)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual Node* geos::geomgraph::PlanarGraph::find </td> <td>(</td> <td class="paramtype"><a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> & </td> <td class="paramname"> <em>coord</em></td> <td> ) </td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <dl class="return"><dt><b>Returns:</b></dt><dd>the node if found; null otherwise </dd></dl> </div> </div> <a class="anchor" id="a11f4d623bf8b2d02ac07f4f0c5bf5a68"></a><!-- doxytag: member="geos::geomgraph::PlanarGraph::findEdge" ref="a11f4d623bf8b2d02ac07f4f0c5bf5a68" args="(const geom::Coordinate &p0, const geom::Coordinate &p1)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual Edge* geos::geomgraph::PlanarGraph::findEdge </td> <td>(</td> <td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> & </td> <td class="paramname"> <em>p0</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> & </td> <td class="paramname"> <em>p1</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Returns the edge whose first two coordinates are p0 and p1. </p> <dl class="return"><dt><b>Returns:</b></dt><dd>the edge, if found <code>null</code> if the edge was not found </dd></dl> </div> </div> <a class="anchor" id="adef38fcf5bfe7e50cea21cd192102b0f"></a><!-- doxytag: member="geos::geomgraph::PlanarGraph::findEdgeEnd" ref="adef38fcf5bfe7e50cea21cd192102b0f" args="(Edge *e)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual <a class="el" href="classgeos_1_1geomgraph_1_1EdgeEnd.html">EdgeEnd</a>* geos::geomgraph::PlanarGraph::findEdgeEnd </td> <td>(</td> <td class="paramtype">Edge * </td> <td class="paramname"> <em>e</em></td> <td> ) </td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Returns the <a class="el" href="classgeos_1_1geomgraph_1_1EdgeEnd.html" title="Models the end of an edge incident on a node.">EdgeEnd</a> which has edge e as its base edge (MD 18 Feb 2002 - this should return a pair of edges). </p> <dl class="return"><dt><b>Returns:</b></dt><dd>the edge, if found <code>null</code> if the edge was not found </dd></dl> </div> </div> <a class="anchor" id="a2157ecd5b89d1b9e4ddf369e7bb96b7b"></a><!-- doxytag: member="geos::geomgraph::PlanarGraph::findEdgeInSameDirection" ref="a2157ecd5b89d1b9e4ddf369e7bb96b7b" args="(const geom::Coordinate &p0, const geom::Coordinate &p1)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual Edge* geos::geomgraph::PlanarGraph::findEdgeInSameDirection </td> <td>(</td> <td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> & </td> <td class="paramname"> <em>p0</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> & </td> <td class="paramname"> <em>p1</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Returns the edge which starts at p0 and whose first segment is parallel to p1. </p> <dl class="return"><dt><b>Returns:</b></dt><dd>the edge, if found <code>null</code> if the edge was not found </dd></dl> </div> </div> <a class="anchor" id="a5d13873aeab1d2ea991c34f78bcd6fc8"></a><!-- doxytag: member="geos::geomgraph::PlanarGraph::linkResultDirectedEdges" ref="a5d13873aeab1d2ea991c34f78bcd6fc8" args="(std::vector< Node * >::iterator start, std::vector< Node * >::iterator end)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static void geos::geomgraph::PlanarGraph::linkResultDirectedEdges </td> <td>(</td> <td class="paramtype">std::vector< Node * >::iterator </td> <td class="paramname"> <em>start</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">std::vector< Node * >::iterator </td> <td class="paramname"> <em>end</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p>For nodes in the vector, link the DirectedEdges at the node that are in the result. </p> <p>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). </p> </div> </div> <hr/>The documentation for this class was generated from the following file:<ul> <li><a class="el" href="geomgraph_2PlanarGraph_8h_source.html">geomgraph/PlanarGraph.h</a></li> </ul> </div> <hr class="footer"/><address class="footer"><small>Generated on Thu Jul 22 2010 for GEOS by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> </body> </html>