Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > 5035839f674c88dea1f7928a86fbdc64 > files > 860

geos-devel-3.2.1-3.fc14.x86_64.rpm

<!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&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;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&nbsp;List</span></a></li>
      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&nbsp;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> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<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 &lt;<a class="el" href="geomgraph_2PlanarGraph_8h_source.html">PlanarGraph.h</a>&gt;</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 &amp;nodeFact)" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><b>PlanarGraph</b> (const NodeFactory &amp;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&lt; Edge * &gt;<br class="typebreak"/>
::iterator&nbsp;</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&lt; <a class="el" href="classgeos_1_1geomgraph_1_1EdgeEnd.html">EdgeEnd</a> * &gt; *&nbsp;</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 &amp;coord)" -->
virtual bool&nbsp;</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> &amp;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&nbsp;</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&nbsp;</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&lt; Node * &gt; &amp;)" -->
virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><b>getNodes</b> (std::vector&lt; Node * &gt; &amp;)</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 *&nbsp;</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 &amp;coord)" -->
virtual Node *&nbsp;</td><td class="memItemRight" valign="bottom"><b>addNode</b> (const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;coord)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual Node *&nbsp;</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> &amp;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&lt; Edge * &gt; &amp;edgesToAdd)" -->
virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1geomgraph_1_1PlanarGraph.html#ace4497331806c06a77a42e1e406e4244">addEdges</a> (const std::vector&lt; Edge * &gt; &amp;edgesToAdd)</td></tr>
<tr><td class="mdescLeft">&nbsp;</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&nbsp;</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&nbsp;</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> *&nbsp;</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">&nbsp;</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 *&nbsp;</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> &amp;p0, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p1)</td></tr>
<tr><td class="mdescLeft">&nbsp;</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 *&nbsp;</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> &amp;p0, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p1)</td></tr>
<tr><td class="mdescLeft">&nbsp;</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&nbsp;</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 *&nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1geomgraph_1_1PlanarGraph.html#a5d13873aeab1d2ea991c34f78bcd6fc8">linkResultDirectedEdges</a> (std::vector&lt; Node * &gt;::iterator start, std::vector&lt; Node * &gt;::iterator end)</td></tr>
<tr><td class="mdescLeft">&nbsp;</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&nbsp;</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&lt; Edge * &gt; *&nbsp;</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 *&nbsp;</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&lt; <a class="el" href="classgeos_1_1geomgraph_1_1EdgeEnd.html">EdgeEnd</a> * &gt; *&nbsp;</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 &amp;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> &amp;&nbsp;</td>
          <td class="paramname"> <em>coord</em></td>
          <td>&nbsp;)&nbsp;</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 &amp;p0, const geom::Coordinate &amp;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> &amp;&nbsp;</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> &amp;&nbsp;</td>
          <td class="paramname"> <em>p1</em></td><td>&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>e</em></td>
          <td>&nbsp;)&nbsp;</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 &amp;p0, const geom::Coordinate &amp;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> &amp;&nbsp;</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> &amp;&nbsp;</td>
          <td class="paramname"> <em>p1</em></td><td>&nbsp;</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&lt; Node * &gt;::iterator start, std::vector&lt; Node * &gt;::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&lt; Node * &gt;::iterator&nbsp;</td>
          <td class="paramname"> <em>start</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; Node * &gt;::iterator&nbsp;</td>
          <td class="paramname"> <em>end</em></td><td>&nbsp;</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&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
</body>
</html>