Sophie

Sophie

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

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::operation::linemerge::LineSequencer 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_1operation.html">operation</a>      </li>
      <li><a class="el" href="namespacegeos_1_1operation_1_1linemerge.html">linemerge</a>      </li>
      <li><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html">geos::operation::linemerge::LineSequencer</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>  </div>
  <div class="headertitle">
<h1>geos::operation::linemerge::LineSequencer Class Reference</h1>  </div>
</div>
<div class="contents">
<!-- doxytag: class="geos::operation::linemerge::LineSequencer" -->
<p>Builds a sequence from a set of LineStrings so that they are ordered end to end.  
<a href="#_details">More...</a></p>

<p><code>#include &lt;<a class="el" href="LineSequencer_8h_source.html">LineSequencer.h</a>&gt;</code></p>

<p><a href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer-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">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a6f67bdb9cae41e922f385097864854a2">isSequenceable</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#aa0b6aa09f7f894d46510d94b76eb07ba">add</a> (const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> &amp;geometry)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#aa869e231e53cda4dfbacd04eabbff7c0">filter</a> (const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *g)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a40cd323835090fd35250b3aff87f95b6">getSequencedLineStrings</a> (bool release=1)</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 bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#abcfd328128243b2dccd49736fbe90d0c">isSequenced</a> (const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *geom)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Builds a sequence from a set of LineStrings so that they are ordered end to end. </p>
<p>A sequence is a complete non-repeating list of the linear components of the input. Each linestring is oriented so that identical endpoints are adjacent in the list.</p>
<p>The input linestrings may form one or more connected sets. The input linestrings should be correctly noded, or the results may not be what is expected. The output of this method is a single MultiLineString containing the ordered linestrings in the sequence.</p>
<p>The sequencing employs the classic <b>Eulerian path</b> graph algorithm. Since Eulerian paths are not uniquely determined, further rules are used to make the computed sequence preserve as much as possible of the input ordering. Within a connected subset of lines, the ordering rules are:</p>
<ul>
<li>If there is degree-1 node which is the start node of an linestring, use that node as the start of the sequence</li>
<li>If there is a degree-1 node which is the end node of an linestring, use that node as the end of the sequence</li>
<li>If the sequence has no degree-1 nodes, use any node as the start</li>
</ul>
<p>Not all arrangements of lines can be sequenced. For a connected set of edges in a graph, Euler's Theorem states that there is a sequence containing each edge once if and only if there are no more than 2 nodes of odd degree. If it is not possible to find a sequence, the isSequenceable method will return <code>false</code>. </p>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="aa0b6aa09f7f894d46510d94b76eb07ba"></a><!-- doxytag: member="geos::operation::linemerge::LineSequencer::add" ref="aa0b6aa09f7f894d46510d94b76eb07ba" args="(const geom::Geometry &amp;geometry)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void geos::operation::linemerge::LineSequencer::add </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>geometry</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Adds a <a class="el" href="">Geometry</a> to be sequenced. May be called multiple times. Any dimension of Geometry may be added; the constituent linework will be extracted.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>geometry</em>&nbsp;</td><td>the geometry to add </td></tr>
  </table>
  </dd>
</dl>

<p>References <a class="el" href="classgeos_1_1geom_1_1Geometry.html#a558ac8159fcba50c602ce9a385005a6a">geos::geom::Geometry::applyComponentFilter()</a>.</p>

</div>
</div>
<a class="anchor" id="aa869e231e53cda4dfbacd04eabbff7c0"></a><!-- doxytag: member="geos::operation::linemerge::LineSequencer::filter" ref="aa869e231e53cda4dfbacd04eabbff7c0" args="(const geom::Geometry *g)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void geos::operation::linemerge::LineSequencer::filter </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *&nbsp;</td>
          <td class="paramname"> <em>g</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Act as a GeometryComponentFilter so to extract the linearworks </p>

</div>
</div>
<a class="anchor" id="a40cd323835090fd35250b3aff87f95b6"></a><!-- doxytag: member="geos::operation::linemerge::LineSequencer::getSequencedLineStrings" ref="a40cd323835090fd35250b3aff87f95b6" args="(bool release=1)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a>* geos::operation::linemerge::LineSequencer::getSequencedLineStrings </td>
          <td>(</td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>release</em> = <code>1</code></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns the LineString or MultiLineString built by the sequencing process, if one exists.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>release</em>&nbsp;</td><td>release ownership of computed Geometry </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the sequenced linestrings, or <code>null</code> if a valid sequence does not exist. </dd></dl>

</div>
</div>
<a class="anchor" id="a6f67bdb9cae41e922f385097864854a2"></a><!-- doxytag: member="geos::operation::linemerge::LineSequencer::isSequenceable" ref="a6f67bdb9cae41e922f385097864854a2" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool geos::operation::linemerge::LineSequencer::isSequenceable </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Tests whether the arrangement of linestrings has a valid sequence.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code> if a valid sequence exists. </dd></dl>

</div>
</div>
<a class="anchor" id="abcfd328128243b2dccd49736fbe90d0c"></a><!-- doxytag: member="geos::operation::linemerge::LineSequencer::isSequenced" ref="abcfd328128243b2dccd49736fbe90d0c" args="(const geom::Geometry *geom)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static bool geos::operation::linemerge::LineSequencer::isSequenced </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *&nbsp;</td>
          <td class="paramname"> <em>geom</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Tests whether a <a class="el" href="">Geometry</a> is sequenced correctly. { LineString}s are trivially sequenced. <a class="el" href="">MultiLineString</a>s are checked for correct sequencing. Otherwise, <code>isSequenced</code> is defined to be <code>true</code> for geometries that are not lineal.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>geom</em>&nbsp;</td><td>the geometry to test </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if the geometry is sequenced or is not lineal </dd></dl>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="LineSequencer_8h_source.html">LineSequencer.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>