geos_390_docs/classgeos_1_1operation_1_1o...

751 lines
38 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::overlayng::LineBuilder 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_1overlayng.html">overlayng</a></li><li class="navelem"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1LineBuilder.html">LineBuilder</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="classgeos_1_1operation_1_1overlayng_1_1LineBuilder-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">geos::operation::overlayng::LineBuilder Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="g_2LineBuilder_8h_source.html">LineBuilder.h</a>&gt;</code></p>
<div class="dynheader">
Collaboration diagram for geos::operation::overlayng::LineBuilder:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classgeos_1_1operation_1_1overlayng_1_1LineBuilder__coll__graph.svg" width="559" height="271"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</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:a63c65c893ff29f6efc79ac066bae807d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1LineBuilder.html#a63c65c893ff29f6efc79ac066bae807d">LineBuilder</a> (const <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1InputGeometry.html">InputGeometry</a> *inputGeom, <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayGraph.html">OverlayGraph</a> *p_graph, bool p_hasResultArea, int p_opCode, const <a class="el" href="classgeos_1_1geom_1_1GeometryFactory.html">geom::GeometryFactory</a> *geomFact)</td></tr>
<tr class="separator:a63c65c893ff29f6efc79ac066bae807d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aff0f53ad60ce73fa86953e9c1ca1d1b0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1LineBuilder.html#aff0f53ad60ce73fa86953e9c1ca1d1b0">LineBuilder</a> (const <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1LineBuilder.html">LineBuilder</a> &amp;)=delete</td></tr>
<tr class="separator:aff0f53ad60ce73fa86953e9c1ca1d1b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b6c43e0c89acd51a32f8c82781fadcd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1LineBuilder.html">LineBuilder</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1LineBuilder.html#a8b6c43e0c89acd51a32f8c82781fadcd">operator=</a> (const <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1LineBuilder.html">LineBuilder</a> &amp;)=delete</td></tr>
<tr class="separator:a8b6c43e0c89acd51a32f8c82781fadcd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a767cc14f8dd0563d5c6c9b455b0fd667"><td class="memItemLeft" align="right" valign="top">std::vector&lt; std::unique_ptr&lt; <a class="el" href="classgeos_1_1geom_1_1LineString.html">geom::LineString</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1LineBuilder.html#a767cc14f8dd0563d5c6c9b455b0fd667">getLines</a> ()</td></tr>
<tr class="separator:a767cc14f8dd0563d5c6c9b455b0fd667"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a474baef8804f588e4c4ac92594bef552"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1LineBuilder.html#a474baef8804f588e4c4ac92594bef552">setStrictMode</a> (bool p_isStrictResultMode)</td></tr>
<tr class="separator:a474baef8804f588e4c4ac92594bef552"><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:a822a2e18cbc8c3d1420e6bd7934763f8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1LineBuilder.html#a822a2e18cbc8c3d1420e6bd7934763f8">markResultLines</a> ()</td></tr>
<tr class="separator:a822a2e18cbc8c3d1420e6bd7934763f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a23637ab1772841de5d7f856042996e1e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1LineBuilder.html#a23637ab1772841de5d7f856042996e1e">isResultLine</a> (const <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayLabel.html">OverlayLabel</a> *lbl) const </td></tr>
<tr class="separator:a23637ab1772841de5d7f856042996e1e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab087d268eba844c285fdebe71a7a06cf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacegeos_1_1geom.html#ae55a225cd843a6b153a7b6ca5a4707c8">geom::Location</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1LineBuilder.html#ab087d268eba844c285fdebe71a7a06cf">effectiveLocation</a> (const <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayLabel.html">OverlayLabel</a> *lbl, int geomIndex) const </td></tr>
<tr class="separator:ab087d268eba844c285fdebe71a7a06cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a55555de08dec7f268d1367e0cc98765d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1LineBuilder.html#a55555de08dec7f268d1367e0cc98765d">addResultLines</a> ()</td></tr>
<tr class="separator:a55555de08dec7f268d1367e0cc98765d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab4c413f6489a4323694815879c175db3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1LineBuilder.html#ab4c413f6489a4323694815879c175db3">addResultLinesMerged</a> ()</td></tr>
<tr class="separator:ab4c413f6489a4323694815879c175db3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa83f58dc5394194b9e36b5ef577964db"><td class="memItemLeft" align="right" valign="top">std::unique_ptr&lt; <a class="el" href="classgeos_1_1geom_1_1LineString.html">geom::LineString</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1LineBuilder.html#aa83f58dc5394194b9e36b5ef577964db">toLine</a> (<a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> *edge)</td></tr>
<tr class="separator:aa83f58dc5394194b9e36b5ef577964db"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a34ed900d11b73ed93de8baab45953e97"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1LineBuilder.html#a34ed900d11b73ed93de8baab45953e97">addResultLinesForNodes</a> ()</td></tr>
<tr class="separator:a34ed900d11b73ed93de8baab45953e97"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4509819cf86bc038283db02f804a4386"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1LineBuilder.html#a4509819cf86bc038283db02f804a4386">addResultLinesRings</a> ()</td></tr>
<tr class="separator:a4509819cf86bc038283db02f804a4386"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acf46da8dd904aab10ab0e6b95c27ce78"><td class="memItemLeft" align="right" valign="top">std::unique_ptr&lt; <a class="el" href="classgeos_1_1geom_1_1LineString.html">geom::LineString</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1LineBuilder.html#acf46da8dd904aab10ab0e6b95c27ce78">buildLine</a> (<a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> *node)</td></tr>
<tr class="separator:acf46da8dd904aab10ab0e6b95c27ce78"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae3fee0a79be9f82d60eb2131aac18b12"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1LineBuilder.html#ae3fee0a79be9f82d60eb2131aac18b12">nextLineEdgeUnvisited</a> (<a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> *node) const </td></tr>
<tr class="separator:ae3fee0a79be9f82d60eb2131aac18b12"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a98c93e77ef0b6384e31627273b345dee"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1LineBuilder.html#a98c93e77ef0b6384e31627273b345dee">degreeOfLines</a> (<a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> *node) const </td></tr>
<tr class="separator:a98c93e77ef0b6384e31627273b345dee"><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:a975c961663c3b1d35d766ce2607812e3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayGraph.html">OverlayGraph</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1LineBuilder.html#a975c961663c3b1d35d766ce2607812e3">graph</a></td></tr>
<tr class="separator:a975c961663c3b1d35d766ce2607812e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a30bbb13235ed7c920d30a9e006a139a5"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1LineBuilder.html#a30bbb13235ed7c920d30a9e006a139a5">opCode</a></td></tr>
<tr class="separator:a30bbb13235ed7c920d30a9e006a139a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aab82b70e72894f086eea75c36f56e7e4"><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_1overlayng_1_1LineBuilder.html#aab82b70e72894f086eea75c36f56e7e4">geometryFactory</a></td></tr>
<tr class="separator:aab82b70e72894f086eea75c36f56e7e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1169b936e665421a99bafebdd54e0934"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1LineBuilder.html#a1169b936e665421a99bafebdd54e0934">hasResultArea</a></td></tr>
<tr class="separator:a1169b936e665421a99bafebdd54e0934"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9d46a2891085bebe5902fc431aace984"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1LineBuilder.html#a9d46a2891085bebe5902fc431aace984">inputAreaIndex</a></td></tr>
<tr class="separator:a9d46a2891085bebe5902fc431aace984"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4c8a4794ff675ba57f3b4faef0805668"><td class="memItemLeft" align="right" valign="top">std::vector&lt; std::unique_ptr&lt; <a class="el" href="classgeos_1_1geom_1_1LineString.html">geom::LineString</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1LineBuilder.html#a4c8a4794ff675ba57f3b4faef0805668">lines</a></td></tr>
<tr class="separator:a4c8a4794ff675ba57f3b4faef0805668"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab8ed9ea3378ed1c58c95193ec9ff0c8f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1LineBuilder.html#ab8ed9ea3378ed1c58c95193ec9ff0c8f">isAllowMixedResult</a> = ! <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayNG.html#acd97de26f1e416ead4c73073977c5a6b">OverlayNG::STRICT_MODE_DEFAULT</a></td></tr>
<tr class="separator:ab8ed9ea3378ed1c58c95193ec9ff0c8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a577594fe0ed835532713720037e8d7db"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1LineBuilder.html#a577594fe0ed835532713720037e8d7db">isAllowCollapseLines</a> = ! <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayNG.html#acd97de26f1e416ead4c73073977c5a6b">OverlayNG::STRICT_MODE_DEFAULT</a></td></tr>
<tr class="separator:a577594fe0ed835532713720037e8d7db"><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>Finds and builds overlay result lines from the overlay graph. Output linework has the following semantics:</p>
<ul>
<li>Linework is fully noded</li>
<li>Lines are as long as possible between nodes</li>
</ul>
<p>Various strategies are possible for how to merge graph edges into lines. This implementation uses the approach of having output lines run contiguously from node to node. For rings a node point is chosen arbitrarily.</p>
<p>Another possible strategy would be to preserve input linework as far as possible (i.e. any sections of input lines which are not coincident with other linework would be preserved).</p>
<p>It would also be possible to output LinearRings, if the input is a LinearRing and is unchanged. This will require additional info from the input linework.</p>
<dl class="section author"><dt>Author</dt><dd>Martin Davis </dd></dl>
<p>Definition at line <a class="el" href="g_2LineBuilder_8h_source.html#l00070">70</a> of file <a class="el" href="g_2LineBuilder_8h_source.html">g/LineBuilder.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a63c65c893ff29f6efc79ac066bae807d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">geos::operation::overlayng::LineBuilder::LineBuilder </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1InputGeometry.html">InputGeometry</a> *&#160;</td>
<td class="paramname"><em>inputGeom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayGraph.html">OverlayGraph</a> *&#160;</td>
<td class="paramname"><em>p_graph</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>p_hasResultArea</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>p_opCode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1GeometryFactory.html">geom::GeometryFactory</a> *&#160;</td>
<td class="paramname"><em>geomFact</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">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="g_2LineBuilder_8h_source.html#l00163">163</a> of file <a class="el" href="g_2LineBuilder_8h_source.html">g/LineBuilder.h</a>.</p>
</div>
</div>
<a class="anchor" id="aff0f53ad60ce73fa86953e9c1ca1d1b0"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">geos::operation::overlayng::LineBuilder::LineBuilder </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1LineBuilder.html">LineBuilder</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">delete</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a55555de08dec7f268d1367e0cc98765d"></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::overlayng::LineBuilder::addResultLines </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="a34ed900d11b73ed93de8baab45953e97"></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::overlayng::LineBuilder::addResultLinesForNodes </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="ab4c413f6489a4323694815879c175db3"></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::overlayng::LineBuilder::addResultLinesMerged </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="a4509819cf86bc038283db02f804a4386"></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::overlayng::LineBuilder::addResultLinesRings </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">
<p>Adds lines which form rings (i.e. have only degree-2 vertices). </p>
</div>
</div>
<a class="anchor" id="acf46da8dd904aab10ab0e6b95c27ce78"></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_1LineString.html">geom::LineString</a>&gt; geos::operation::overlayng::LineBuilder::buildLine </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</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">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Traverses edges from edgeStart which lie in a single line (have degree = 2).</p>
<p>The direction of the linework is preserved as far as possible. Specifically, the direction of the line is determined by the start edge direction. This implies that if all edges are reversed, the created line will be reversed to match. (Other more complex strategies would be possible. E.g. using the direction of the majority of segments, or preferring the direction of the A edges.) </p>
</div>
</div>
<a class="anchor" id="a98c93e77ef0b6384e31627273b345dee"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int geos::operation::overlayng::LineBuilder::degreeOfLines </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> *&#160;</td>
<td class="paramname"><em>node</em></td><td>)</td>
<td> const</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 the degree of the line edges incident on a node </p>
</div>
</div>
<a class="anchor" id="ab087d268eba844c285fdebe71a7a06cf"></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="namespacegeos_1_1geom.html#ae55a225cd843a6b153a7b6ca5a4707c8">geom::Location</a> geos::operation::overlayng::LineBuilder::effectiveLocation </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayLabel.html">OverlayLabel</a> *&#160;</td>
<td class="paramname"><em>lbl</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>geomIndex</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</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>Determines the effective location for a line, for the purpose of overlay operation evaluation. Line edges and Collapses are reported as INTERIOR so they may be included in the result if warranted by the effect of the operation on the two edges. (For instance, the intersection of line edge and a collapsed boundary is included in the result). </p>
</div>
</div>
<a class="anchor" id="a767cc14f8dd0563d5c6c9b455b0fd667"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;std::unique_ptr&lt;<a class="el" href="classgeos_1_1geom_1_1LineString.html">geom::LineString</a>&gt; &gt; geos::operation::overlayng::LineBuilder::getLines </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a23637ab1772841de5d7f856042996e1e"></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::overlayng::LineBuilder::isResultLine </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayLabel.html">OverlayLabel</a> *&#160;</td>
<td class="paramname"><em>lbl</em></td><td>)</td>
<td> const</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>Checks if the topology indicated by an edge label determines that this edge should be part of a result line.</p>
<p>Note that the logic here relies on the semantic that for intersection lines are only returned if there is no result area components. </p>
</div>
</div>
<a class="anchor" id="a822a2e18cbc8c3d1420e6bd7934763f8"></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::overlayng::LineBuilder::markResultLines </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="ae3fee0a79be9f82d60eb2131aac18b12"></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_1overlayng_1_1OverlayEdge.html">OverlayEdge</a>* geos::operation::overlayng::LineBuilder::nextLineEdgeUnvisited </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> *&#160;</td>
<td class="paramname"><em>node</em></td><td>)</td>
<td> const</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="a8b6c43e0c89acd51a32f8c82781fadcd"></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_1overlayng_1_1LineBuilder.html">LineBuilder</a>&amp; geos::operation::overlayng::LineBuilder::operator= </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1LineBuilder.html">LineBuilder</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">delete</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a474baef8804f588e4c4ac92594bef552"></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::overlayng::LineBuilder::setStrictMode </td>
<td>(</td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>p_isStrictResultMode</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="g_2LineBuilder_8h_source.html#l00178">178</a> of file <a class="el" href="g_2LineBuilder_8h_source.html">g/LineBuilder.h</a>.</p>
</div>
</div>
<a class="anchor" id="aa83f58dc5394194b9e36b5ef577964db"></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_1LineString.html">geom::LineString</a>&gt; geos::operation::overlayng::LineBuilder::toLine </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> *&#160;</td>
<td class="paramname"><em>edge</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>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="aab82b70e72894f086eea75c36f56e7e4"></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::overlayng::LineBuilder::geometryFactory</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="g_2LineBuilder_8h_source.html#l00077">77</a> of file <a class="el" href="g_2LineBuilder_8h_source.html">g/LineBuilder.h</a>.</p>
</div>
</div>
<a class="anchor" id="a975c961663c3b1d35d766ce2607812e3"></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_1overlayng_1_1OverlayGraph.html">OverlayGraph</a>* geos::operation::overlayng::LineBuilder::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="g_2LineBuilder_8h_source.html#l00075">75</a> of file <a class="el" href="g_2LineBuilder_8h_source.html">g/LineBuilder.h</a>.</p>
</div>
</div>
<a class="anchor" id="a1169b936e665421a99bafebdd54e0934"></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::overlayng::LineBuilder::hasResultArea</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="g_2LineBuilder_8h_source.html#l00078">78</a> of file <a class="el" href="g_2LineBuilder_8h_source.html">g/LineBuilder.h</a>.</p>
</div>
</div>
<a class="anchor" id="a9d46a2891085bebe5902fc431aace984"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int geos::operation::overlayng::LineBuilder::inputAreaIndex</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="g_2LineBuilder_8h_source.html#l00079">79</a> of file <a class="el" href="g_2LineBuilder_8h_source.html">g/LineBuilder.h</a>.</p>
</div>
</div>
<a class="anchor" id="a577594fe0ed835532713720037e8d7db"></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::overlayng::LineBuilder::isAllowCollapseLines = ! <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayNG.html#acd97de26f1e416ead4c73073977c5a6b">OverlayNG::STRICT_MODE_DEFAULT</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>Allow lines created by area topology collapses to appear in the result. True provides the original JTS semantics. </p>
<p>Definition at line <a class="el" href="g_2LineBuilder_8h_source.html#l00095">95</a> of file <a class="el" href="g_2LineBuilder_8h_source.html">g/LineBuilder.h</a>.</p>
</div>
</div>
<a class="anchor" id="ab8ed9ea3378ed1c58c95193ec9ff0c8f"></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::overlayng::LineBuilder::isAllowMixedResult = ! <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayNG.html#acd97de26f1e416ead4c73073977c5a6b">OverlayNG::STRICT_MODE_DEFAULT</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>Indicates whether intersections are allowed to produce heterogeneous results including proper boundary touches. This does not control inclusion of touches along collapses. True provides the original JTS semantics. </p>
<p>Definition at line <a class="el" href="g_2LineBuilder_8h_source.html#l00088">88</a> of file <a class="el" href="g_2LineBuilder_8h_source.html">g/LineBuilder.h</a>.</p>
</div>
</div>
<a class="anchor" id="a4c8a4794ff675ba57f3b4faef0805668"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;std::unique_ptr&lt;<a class="el" href="classgeos_1_1geom_1_1LineString.html">geom::LineString</a>&gt; &gt; geos::operation::overlayng::LineBuilder::lines</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="g_2LineBuilder_8h_source.html#l00080">80</a> of file <a class="el" href="g_2LineBuilder_8h_source.html">g/LineBuilder.h</a>.</p>
</div>
</div>
<a class="anchor" id="a30bbb13235ed7c920d30a9e006a139a5"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int geos::operation::overlayng::LineBuilder::opCode</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="g_2LineBuilder_8h_source.html#l00076">76</a> of file <a class="el" href="g_2LineBuilder_8h_source.html">g/LineBuilder.h</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="g_2LineBuilder_8h_source.html">g/LineBuilder.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>