geos_390_docs/classgeos_1_1operation_1_1l...

1024 lines
54 KiB
HTML

<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>GEOS: geos::operation::linemerge::LineSequencer Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">GEOS
&#160;<span id="projectnumber">3.9.1dev</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;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 id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacegeos.html">geos</a></li><li class="navelem"><a class="el" href="namespacegeos_1_1operation.html">operation</a></li><li class="navelem"><a class="el" href="namespacegeos_1_1operation_1_1linemerge.html">linemerge</a></li><li class="navelem"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html">LineSequencer</a></li> </ul>
</div>
</div><!-- top -->
<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="#pri-types">Private Types</a> &#124;
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#pri-static-methods">Static Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">geos::operation::linemerge::LineSequencer Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Builds a sequence from a set of LineStrings so that they are ordered end to end.
<a href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="LineSequencer_8h_source.html">LineSequencer.h</a>&gt;</code></p>
<div class="dynheader">
Collaboration diagram for geos::operation::linemerge::LineSequencer:</div>
<div class="dyncontent">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="classgeos_1_1operation_1_1linemerge_1_1LineSequencer__coll__graph.svg" width="100%" height="431"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a4770f671b801959d632d968d30d6fb0c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a4770f671b801959d632d968d30d6fb0c">LineSequencer</a> ()</td></tr>
<tr class="separator:a4770f671b801959d632d968d30d6fb0c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6f67bdb9cae41e922f385097864854a2"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a6f67bdb9cae41e922f385097864854a2">isSequenceable</a> ()</td></tr>
<tr class="memdesc:a6f67bdb9cae41e922f385097864854a2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Tests whether the arrangement of linestrings has a valid sequence. <a href="#a6f67bdb9cae41e922f385097864854a2">More...</a><br /></td></tr>
<tr class="separator:a6f67bdb9cae41e922f385097864854a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa0b6aa09f7f894d46510d94b76eb07ba"><td class="memItemLeft" align="right" valign="top">void&#160;</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 class="memdesc:aa0b6aa09f7f894d46510d94b76eb07ba"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds a <a class="el" href="classgeos_1_1geom_1_1Geometry.html">Geometry</a> to be sequenced. <a href="#aa0b6aa09f7f894d46510d94b76eb07ba">More...</a><br /></td></tr>
<tr class="separator:aa0b6aa09f7f894d46510d94b76eb07ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae96f648dc99abbdb16da98475f0151ef"><td class="memTemplParams" colspan="2">template&lt;class TargetContainer &gt; </td></tr>
<tr class="memitem:ae96f648dc99abbdb16da98475f0151ef"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#ae96f648dc99abbdb16da98475f0151ef">add</a> (TargetContainer &amp;geoms)</td></tr>
<tr class="separator:ae96f648dc99abbdb16da98475f0151ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa869e231e53cda4dfbacd04eabbff7c0"><td class="memItemLeft" align="right" valign="top">void&#160;</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 class="memdesc:aa869e231e53cda4dfbacd04eabbff7c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Act as a GeometryComponentFilter so to extract the linearworks. <a href="#aa869e231e53cda4dfbacd04eabbff7c0">More...</a><br /></td></tr>
<tr class="separator:aa869e231e53cda4dfbacd04eabbff7c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a40cd323835090fd35250b3aff87f95b6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *&#160;</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 class="memdesc:a40cd323835090fd35250b3aff87f95b6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the LineString or MultiLineString built by the sequencing process, if one exists. <a href="#a40cd323835090fd35250b3aff87f95b6">More...</a><br /></td></tr>
<tr class="separator:a40cd323835090fd35250b3aff87f95b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a491259262fcd064a8d199d8e3823f8b2"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a491259262fcd064a8d199d8e3823f8b2">sequence</a> (const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> &amp;geom)</td></tr>
<tr class="separator:a491259262fcd064a8d199d8e3823f8b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abcfd328128243b2dccd49736fbe90d0c"><td class="memItemLeft" align="right" valign="top">static bool&#160;</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>
<tr class="memdesc:abcfd328128243b2dccd49736fbe90d0c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Tests whether a <a class="el" href="classgeos_1_1geom_1_1Geometry.html">Geometry</a> is sequenced correctly. <a href="#abcfd328128243b2dccd49736fbe90d0c">More...</a><br /></td></tr>
<tr class="separator:abcfd328128243b2dccd49736fbe90d0c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-types"></a>
Private Types</h2></td></tr>
<tr class="memitem:a2c0f10088b70b8c644e4e64ed453a0ca"><td class="memItemLeft" align="right" valign="top">typedef std::list&lt; <a class="el" href="classgeos_1_1planargraph_1_1DirectedEdge.html">planargraph::DirectedEdge</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a2c0f10088b70b8c644e4e64ed453a0ca">DirEdgeList</a></td></tr>
<tr class="separator:a2c0f10088b70b8c644e4e64ed453a0ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a44bad8dd33e10469b2889978a266c4b4"><td class="memItemLeft" align="right" valign="top">typedef std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a2c0f10088b70b8c644e4e64ed453a0ca">DirEdgeList</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a44bad8dd33e10469b2889978a266c4b4">Sequences</a></td></tr>
<tr class="separator:a44bad8dd33e10469b2889978a266c4b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr class="memitem:a6c018a5d0e59bada549c2db5a53b4823"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a6c018a5d0e59bada549c2db5a53b4823">addLine</a> (const <a class="el" href="classgeos_1_1geom_1_1LineString.html">geom::LineString</a> *lineString)</td></tr>
<tr class="separator:a6c018a5d0e59bada549c2db5a53b4823"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1dd7fd157dc84ee6e4c4386227b773fd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a1dd7fd157dc84ee6e4c4386227b773fd">computeSequence</a> ()</td></tr>
<tr class="separator:a1dd7fd157dc84ee6e4c4386227b773fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a80e7bb88350986f74a79b59921748a0b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a44bad8dd33e10469b2889978a266c4b4">Sequences</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a80e7bb88350986f74a79b59921748a0b">findSequences</a> ()</td></tr>
<tr class="separator:a80e7bb88350986f74a79b59921748a0b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2e22fe99117adda79edbb0513321195e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a2c0f10088b70b8c644e4e64ed453a0ca">DirEdgeList</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a2e22fe99117adda79edbb0513321195e">findSequence</a> (<a class="el" href="classgeos_1_1planargraph_1_1Subgraph.html">planargraph::Subgraph</a> &amp;<a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a561b65b906dd4c1bc236b35b4c535db4">graph</a>)</td></tr>
<tr class="separator:a2e22fe99117adda79edbb0513321195e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7171e625d8da85f2218384e4e766e34f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a7171e625d8da85f2218384e4e766e34f">delAll</a> (<a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a44bad8dd33e10469b2889978a266c4b4">Sequences</a> &amp;)</td></tr>
<tr class="separator:a7171e625d8da85f2218384e4e766e34f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af5fc85210ec4c87d80b7128acbd3c008"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#af5fc85210ec4c87d80b7128acbd3c008">buildSequencedGeometry</a> (const <a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a44bad8dd33e10469b2889978a266c4b4">Sequences</a> &amp;sequences)</td></tr>
<tr class="separator:af5fc85210ec4c87d80b7128acbd3c008"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2dbab6362a2a734c65f66fe29cbc4e14"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a2dbab6362a2a734c65f66fe29cbc4e14">addReverseSubpath</a> (const <a class="el" href="classgeos_1_1planargraph_1_1DirectedEdge.html">planargraph::DirectedEdge</a> *de, <a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a2c0f10088b70b8c644e4e64ed453a0ca">DirEdgeList</a> &amp;deList, DirEdgeList::iterator lit, bool expectedClosed)</td></tr>
<tr class="separator:a2dbab6362a2a734c65f66fe29cbc4e14"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2ebb44967e4628460c5432445e3b5a23"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a2c0f10088b70b8c644e4e64ed453a0ca">DirEdgeList</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a2ebb44967e4628460c5432445e3b5a23">orient</a> (<a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a2c0f10088b70b8c644e4e64ed453a0ca">DirEdgeList</a> *seq)</td></tr>
<tr class="separator:a2ebb44967e4628460c5432445e3b5a23"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9b793c9e933098a35291d9fc214f59ab"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a2c0f10088b70b8c644e4e64ed453a0ca">DirEdgeList</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a9b793c9e933098a35291d9fc214f59ab">reverse</a> (<a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a2c0f10088b70b8c644e4e64ed453a0ca">DirEdgeList</a> &amp;seq)</td></tr>
<tr class="separator:a9b793c9e933098a35291d9fc214f59ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0d857bd42d5fa2e9550be0073a562cc4"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a0d857bd42d5fa2e9550be0073a562cc4">hasSequence</a> (<a class="el" href="classgeos_1_1planargraph_1_1Subgraph.html">planargraph::Subgraph</a> &amp;<a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a561b65b906dd4c1bc236b35b4c535db4">graph</a>)</td></tr>
<tr class="separator:a0d857bd42d5fa2e9550be0073a562cc4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-static-methods"></a>
Static Private Member Functions</h2></td></tr>
<tr class="memitem:acaf4813d2cabed59d7c83292c137b105"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classgeos_1_1geom_1_1LineString.html">geom::LineString</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#acaf4813d2cabed59d7c83292c137b105">reverse</a> (const <a class="el" href="classgeos_1_1geom_1_1LineString.html">geom::LineString</a> *line)</td></tr>
<tr class="memdesc:acaf4813d2cabed59d7c83292c137b105"><td class="mdescLeft">&#160;</td><td class="mdescRight">return a newly allocated LineString <a href="#acaf4813d2cabed59d7c83292c137b105">More...</a><br /></td></tr>
<tr class="separator:acaf4813d2cabed59d7c83292c137b105"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa91dfc0ae83d4b3a3b3d99be6fd8d51e"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classgeos_1_1planargraph_1_1Node.html">planargraph::Node</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#aa91dfc0ae83d4b3a3b3d99be6fd8d51e">findLowestDegreeNode</a> (const <a class="el" href="classgeos_1_1planargraph_1_1Subgraph.html">planargraph::Subgraph</a> &amp;<a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a561b65b906dd4c1bc236b35b4c535db4">graph</a>)</td></tr>
<tr class="separator:aa91dfc0ae83d4b3a3b3d99be6fd8d51e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acbfb61313ed202cc821f70512d0c8f7d"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classgeos_1_1planargraph_1_1DirectedEdge.html">planargraph::DirectedEdge</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#acbfb61313ed202cc821f70512d0c8f7d">findUnvisitedBestOrientedDE</a> (const <a class="el" href="classgeos_1_1planargraph_1_1Node.html">planargraph::Node</a> *node)</td></tr>
<tr class="separator:acbfb61313ed202cc821f70512d0c8f7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:a561b65b906dd4c1bc236b35b4c535db4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineMergeGraph.html">LineMergeGraph</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a561b65b906dd4c1bc236b35b4c535db4">graph</a></td></tr>
<tr class="separator:a561b65b906dd4c1bc236b35b4c535db4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4f151b86ea022d8a2187aaf96b799d6a"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classgeos_1_1geom_1_1GeometryFactory.html">geom::GeometryFactory</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a4f151b86ea022d8a2187aaf96b799d6a">factory</a></td></tr>
<tr class="separator:a4f151b86ea022d8a2187aaf96b799d6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3bcf554f3d1ca862066e91aeb1f673c5"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a3bcf554f3d1ca862066e91aeb1f673c5">lineCount</a></td></tr>
<tr class="separator:a3bcf554f3d1ca862066e91aeb1f673c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abc13840277ed63c0469971db28c6281e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#abc13840277ed63c0469971db28c6281e">isRun</a></td></tr>
<tr class="separator:abc13840277ed63c0469971db28c6281e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad415cb1425385af578e879ad9044298b"><td class="memItemLeft" align="right" valign="top">std::unique_ptr&lt; <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#ad415cb1425385af578e879ad9044298b">sequencedGeometry</a></td></tr>
<tr class="separator:ad415cb1425385af578e879ad9044298b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a18d54d6346ccb65e6b1e44f4c2fa4cae"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a18d54d6346ccb65e6b1e44f4c2fa4cae">isSequenceableVar</a></td></tr>
<tr class="separator:a18d54d6346ccb65e6b1e44f4c2fa4cae"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><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>A typical use case is to convert a set of unoriented geometric links from a linear network (e.g. such as block faces on a bus route) into a continuous oriented path through the network.</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 computed output 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>
<dl class="section note"><dt>Note</dt><dd>Not all arrangements of lines can be sequenced. For a connected set of edges in a graph, <em>Euler's Theorem</em> states that there is a sequence containing each edge once <b>if and only if</b> there are no more than 2 nodes of odd degree. If it is not possible to find a sequence, the <code>isSequenceable</code> method will return <code>false</code>. </dd></dl>
<p>Definition at line <a class="el" href="LineSequencer_8h_source.html#l00093">93</a> of file <a class="el" href="LineSequencer_8h_source.html">LineSequencer.h</a>.</p>
</div><h2 class="groupheader">Member Typedef Documentation</h2>
<a class="anchor" id="a2c0f10088b70b8c644e4e64ed453a0ca"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">typedef std::list&lt;<a class="el" href="classgeos_1_1planargraph_1_1DirectedEdge.html">planargraph::DirectedEdge</a>*&gt; <a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a2c0f10088b70b8c644e4e64ed453a0ca">geos::operation::linemerge::LineSequencer::DirEdgeList</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="LineSequencer_8h_source.html#l00096">96</a> of file <a class="el" href="LineSequencer_8h_source.html">LineSequencer.h</a>.</p>
</div>
</div>
<a class="anchor" id="a44bad8dd33e10469b2889978a266c4b4"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">typedef std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a2c0f10088b70b8c644e4e64ed453a0ca">DirEdgeList</a>* &gt; <a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a44bad8dd33e10469b2889978a266c4b4">geos::operation::linemerge::LineSequencer::Sequences</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="LineSequencer_8h_source.html#l00097">97</a> of file <a class="el" href="LineSequencer_8h_source.html">LineSequencer.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a4770f671b801959d632d968d30d6fb0c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">geos::operation::linemerge::LineSequencer::LineSequencer </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="LineSequencer_8h_source.html#l00198">198</a> of file <a class="el" href="LineSequencer_8h_source.html">LineSequencer.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="aa0b6aa09f7f894d46510d94b76eb07ba"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<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;&#160;</td>
<td class="paramname"><em>geometry</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Adds a <a class="el" href="classgeos_1_1geom_1_1Geometry.html">Geometry</a> to be sequenced. </p>
<p>May be called multiple times. Any dimension of Geometry may be added; the constituent linework will be extracted.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">geometry</td><td>the geometry to add </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="LineSequencer_8h_source.html#l00243">243</a> of file <a class="el" href="LineSequencer_8h_source.html">LineSequencer.h</a>.</p>
<p>References <a class="el" href="Geometry_8h_source.html#l00768">geos::geom::Geometry::applyComponentFilter()</a>.</p>
<p>Referenced by <a class="el" href="LineSequencer_8h_source.html#l00191">sequence()</a>.</p>
<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classgeos_1_1operation_1_1linemerge_1_1LineSequencer_aa0b6aa09f7f894d46510d94b76eb07ba_cgraph.svg" width="422" height="55"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</p>
<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classgeos_1_1operation_1_1linemerge_1_1LineSequencer_aa0b6aa09f7f894d46510d94b76eb07ba_icgraph.svg" width="448" height="55"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</p>
</div>
</div>
<a class="anchor" id="ae96f648dc99abbdb16da98475f0151ef"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class TargetContainer &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void geos::operation::linemerge::LineSequencer::add </td>
<td>(</td>
<td class="paramtype">TargetContainer &amp;&#160;</td>
<td class="paramname"><em>geoms</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="LineSequencer_8h_source.html#l00250">250</a> of file <a class="el" href="LineSequencer_8h_source.html">LineSequencer.h</a>.</p>
</div>
</div>
<a class="anchor" id="a6c018a5d0e59bada549c2db5a53b4823"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void geos::operation::linemerge::LineSequencer::addLine </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1LineString.html">geom::LineString</a> *&#160;</td>
<td class="paramname"><em>lineString</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a2dbab6362a2a734c65f66fe29cbc4e14"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void geos::operation::linemerge::LineSequencer::addReverseSubpath </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1planargraph_1_1DirectedEdge.html">planargraph::DirectedEdge</a> *&#160;</td>
<td class="paramname"><em>de</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a2c0f10088b70b8c644e4e64ed453a0ca">DirEdgeList</a> &amp;&#160;</td>
<td class="paramname"><em>deList</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">DirEdgeList::iterator&#160;</td>
<td class="paramname"><em>lit</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>expectedClosed</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="af5fc85210ec4c87d80b7128acbd3c008"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a>* geos::operation::linemerge::LineSequencer::buildSequencedGeometry </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a44bad8dd33e10469b2889978a266c4b4">Sequences</a> &amp;&#160;</td>
<td class="paramname"><em>sequences</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Builds a geometry (<a class="el" href="">LineString</a> or <a class="el" href="">MultiLineString</a> ) representing the sequence.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sequences</td><td>a vector of vectors of const planarDirectedEdges with LineMergeEdges as their parent edges. Ownership of container <em>and</em> contents retained by caller.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the sequenced geometry, possibly NULL if no sequence exists </dd></dl>
</div>
</div>
<a class="anchor" id="a1dd7fd157dc84ee6e4c4386227b773fd"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void geos::operation::linemerge::LineSequencer::computeSequence </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a7171e625d8da85f2218384e4e766e34f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void geos::operation::linemerge::LineSequencer::delAll </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a44bad8dd33e10469b2889978a266c4b4">Sequences</a> &amp;&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="aa869e231e53cda4dfbacd04eabbff7c0"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<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> *&#160;</td>
<td class="paramname"><em>g</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Act as a GeometryComponentFilter so to extract the linearworks. </p>
<p>Definition at line <a class="el" href="LineSequencer_8h_source.html#l00264">264</a> of file <a class="el" href="LineSequencer_8h_source.html">LineSequencer.h</a>.</p>
</div>
</div>
<a class="anchor" id="aa91dfc0ae83d4b3a3b3d99be6fd8d51e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static const <a class="el" href="classgeos_1_1planargraph_1_1Node.html">planargraph::Node</a>* geos::operation::linemerge::LineSequencer::findLowestDegreeNode </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1planargraph_1_1Subgraph.html">planargraph::Subgraph</a> &amp;&#160;</td>
<td class="paramname"><em>graph</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a2e22fe99117adda79edbb0513321195e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a2c0f10088b70b8c644e4e64ed453a0ca">DirEdgeList</a>* geos::operation::linemerge::LineSequencer::findSequence </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classgeos_1_1planargraph_1_1Subgraph.html">planargraph::Subgraph</a> &amp;&#160;</td>
<td class="paramname"><em>graph</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a80e7bb88350986f74a79b59921748a0b"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a44bad8dd33e10469b2889978a266c4b4">Sequences</a>* geos::operation::linemerge::LineSequencer::findSequences </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="acbfb61313ed202cc821f70512d0c8f7d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static const <a class="el" href="classgeos_1_1planargraph_1_1DirectedEdge.html">planargraph::DirectedEdge</a>* geos::operation::linemerge::LineSequencer::findUnvisitedBestOrientedDE </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1planargraph_1_1Node.html">planargraph::Node</a> *&#160;</td>
<td class="paramname"><em>node</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Finds an <a class="el" href="">DirectedEdge</a> for an unvisited edge (if any), choosing the dirEdge which preserves orientation, if possible.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">node</td><td>the node to examine </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the dirEdge found, or <code>null</code> if none were unvisited </dd></dl>
</div>
</div>
<a class="anchor" id="a40cd323835090fd35250b3aff87f95b6"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<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&#160;</td>
<td class="paramname"><em>release</em> = <code>1</code></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the LineString or MultiLineString built by the sequencing process, if one exists. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">release</td><td>release ownership of computed Geometry </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the sequenced linestrings, or <code>null</code> if a valid sequence does not exist. </dd></dl>
<p>Definition at line <a class="el" href="LineSequencer_8h_source.html#l00281">281</a> of file <a class="el" href="LineSequencer_8h_source.html">LineSequencer.h</a>.</p>
<p>Referenced by <a class="el" href="LineSequencer_8h_source.html#l00191">sequence()</a>.</p>
<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classgeos_1_1operation_1_1linemerge_1_1LineSequencer_a40cd323835090fd35250b3aff87f95b6_icgraph.svg" width="511" height="71"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</p>
</div>
</div>
<a class="anchor" id="a0d857bd42d5fa2e9550be0073a562cc4"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool geos::operation::linemerge::LineSequencer::hasSequence </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classgeos_1_1planargraph_1_1Subgraph.html">planargraph::Subgraph</a> &amp;&#160;</td>
<td class="paramname"><em>graph</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Tests whether a complete unique path exists in a graph using Euler's Theorem.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">graph</td><td>the subgraph containing the edges </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> if a sequence exists </dd></dl>
</div>
</div>
<a class="anchor" id="a6f67bdb9cae41e922f385097864854a2"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool geos::operation::linemerge::LineSequencer::isSequenceable </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Tests whether the arrangement of linestrings has a valid sequence. </p>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> if a valid sequence exists. </dd></dl>
<p>Definition at line <a class="el" href="LineSequencer_8h_source.html#l00227">227</a> of file <a class="el" href="LineSequencer_8h_source.html">LineSequencer.h</a>.</p>
</div>
</div>
<a class="anchor" id="abcfd328128243b2dccd49736fbe90d0c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<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> *&#160;</td>
<td class="paramname"><em>geom</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Tests whether a <a class="el" href="classgeos_1_1geom_1_1Geometry.html">Geometry</a> is sequenced correctly. </p>
<p><a class="el" href="classgeos_1_1geom_1_1LineString.html">LineStrings</a> are trivially sequenced. <a class="el" href="classgeos_1_1geom_1_1MultiLineString.html">MultiLineStrings</a> are checked for correct sequencing. Otherwise, <code>isSequenced</code> is defined to be <code>true</code> for geometries that are not lineal.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">geom</td><td>the geometry to test </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> if the geometry is sequenced or is not lineal </dd></dl>
</div>
</div>
<a class="anchor" id="a2ebb44967e4628460c5432445e3b5a23"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a2c0f10088b70b8c644e4e64ed453a0ca">DirEdgeList</a>* geos::operation::linemerge::LineSequencer::orient </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a2c0f10088b70b8c644e4e64ed453a0ca">DirEdgeList</a> *&#160;</td>
<td class="paramname"><em>seq</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Computes a version of the sequence which is optimally oriented relative to the underlying geometry.</p>
<p>Heuristics used are:</p>
<ul>
<li>If the path has a degree-1 node which is the start node of an linestring, use that node as the start of the sequence</li>
<li>If the path has 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 (NOTE: in this case could orient the sequence according to the majority of the linestring orientations)</li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">seq</td><td>a List of planarDirectedEdges </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the oriented sequence, possibly same as input if already oriented </dd></dl>
</div>
</div>
<a class="anchor" id="acaf4813d2cabed59d7c83292c137b105"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="classgeos_1_1geom_1_1LineString.html">geom::LineString</a>* geos::operation::linemerge::LineSequencer::reverse </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1LineString.html">geom::LineString</a> *&#160;</td>
<td class="paramname"><em>line</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>return a newly allocated LineString </p>
</div>
</div>
<a class="anchor" id="a9b793c9e933098a35291d9fc214f59ab"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a2c0f10088b70b8c644e4e64ed453a0ca">DirEdgeList</a>* geos::operation::linemerge::LineSequencer::reverse </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineSequencer.html#a2c0f10088b70b8c644e4e64ed453a0ca">DirEdgeList</a> &amp;&#160;</td>
<td class="paramname"><em>seq</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Reverse the sequence. This requires reversing the order of the dirEdges, and flipping each dirEdge as well</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">seq</td><td>a List of DirectedEdges, in sequential order </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the reversed sequence </dd></dl>
</div>
</div>
<a class="anchor" id="a491259262fcd064a8d199d8e3823f8b2"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a>* geos::operation::linemerge::LineSequencer::sequence </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> &amp;&#160;</td>
<td class="paramname"><em>geom</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="LineSequencer_8h_source.html#l00191">191</a> of file <a class="el" href="LineSequencer_8h_source.html">LineSequencer.h</a>.</p>
<p>References <a class="el" href="LineSequencer_8h_source.html#l00243">add()</a>, and <a class="el" href="LineSequencer_8h_source.html#l00281">getSequencedLineStrings()</a>.</p>
<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="classgeos_1_1operation_1_1linemerge_1_1LineSequencer_a491259262fcd064a8d199d8e3823f8b2_cgraph.svg" width="100%" height="404"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>
</p>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="a4f151b86ea022d8a2187aaf96b799d6a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="classgeos_1_1geom_1_1GeometryFactory.html">geom::GeometryFactory</a>* geos::operation::linemerge::LineSequencer::factory</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="LineSequencer_8h_source.html#l00100">100</a> of file <a class="el" href="LineSequencer_8h_source.html">LineSequencer.h</a>.</p>
</div>
</div>
<a class="anchor" id="a561b65b906dd4c1bc236b35b4c535db4"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classgeos_1_1operation_1_1linemerge_1_1LineMergeGraph.html">LineMergeGraph</a> geos::operation::linemerge::LineSequencer::graph</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="LineSequencer_8h_source.html#l00099">99</a> of file <a class="el" href="LineSequencer_8h_source.html">LineSequencer.h</a>.</p>
</div>
</div>
<a class="anchor" id="abc13840277ed63c0469971db28c6281e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool geos::operation::linemerge::LineSequencer::isRun</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="LineSequencer_8h_source.html#l00102">102</a> of file <a class="el" href="LineSequencer_8h_source.html">LineSequencer.h</a>.</p>
</div>
</div>
<a class="anchor" id="a18d54d6346ccb65e6b1e44f4c2fa4cae"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool geos::operation::linemerge::LineSequencer::isSequenceableVar</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="LineSequencer_8h_source.html#l00104">104</a> of file <a class="el" href="LineSequencer_8h_source.html">LineSequencer.h</a>.</p>
</div>
</div>
<a class="anchor" id="a3bcf554f3d1ca862066e91aeb1f673c5"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned int geos::operation::linemerge::LineSequencer::lineCount</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="LineSequencer_8h_source.html#l00101">101</a> of file <a class="el" href="LineSequencer_8h_source.html">LineSequencer.h</a>.</p>
</div>
</div>
<a class="anchor" id="ad415cb1425385af578e879ad9044298b"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::unique_ptr&lt;<a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a>&gt; geos::operation::linemerge::LineSequencer::sequencedGeometry</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="LineSequencer_8h_source.html#l00103">103</a> of file <a class="el" href="LineSequencer_8h_source.html">LineSequencer.h</a>.</p>
</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><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.11
</small></address>
</body>
</html>