geos_390_docs/classgeos_1_1operation_1_1o...

728 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::OverlayLabeller 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_1OverlayLabeller.html">OverlayLabeller</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-static-methods">Static Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="classgeos_1_1operation_1_1overlayng_1_1OverlayLabeller-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">geos::operation::overlayng::OverlayLabeller Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="OverlayLabeller_8h_source.html">OverlayLabeller.h</a>&gt;</code></p>
<div class="dynheader">
Collaboration diagram for geos::operation::overlayng::OverlayLabeller:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classgeos_1_1operation_1_1overlayng_1_1OverlayLabeller__coll__graph.svg" width="539" height="123"><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:a1708bdb321795fae917ff8d70bf6df59"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayLabeller.html#a1708bdb321795fae917ff8d70bf6df59">OverlayLabeller</a> (<a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayGraph.html">OverlayGraph</a> *p_graph, <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1InputGeometry.html">InputGeometry</a> *p_inputGeometry)</td></tr>
<tr class="separator:a1708bdb321795fae917ff8d70bf6df59"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a525abf5511dbdf369623e0f0dafbd32e"><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_1OverlayLabeller.html#a525abf5511dbdf369623e0f0dafbd32e">computeLabelling</a> ()</td></tr>
<tr class="separator:a525abf5511dbdf369623e0f0dafbd32e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7978d6942687e8406a7a4826b0d4208"><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_1OverlayLabeller.html#af7978d6942687e8406a7a4826b0d4208">propagateAreaLocations</a> (<a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> *nodeEdge, int geomIndex)</td></tr>
<tr class="separator:af7978d6942687e8406a7a4826b0d4208"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a08c035d3e732441d15cfab5b8da635ab"><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_1OverlayLabeller.html#a08c035d3e732441d15cfab5b8da635ab">markResultAreaEdges</a> (int overlayOpCode)</td></tr>
<tr class="separator:a08c035d3e732441d15cfab5b8da635ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afa052456eea3977cc002d0260cd4621e"><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_1OverlayLabeller.html#afa052456eea3977cc002d0260cd4621e">markInResultArea</a> (<a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> *e, int overlayOpCode)</td></tr>
<tr class="separator:afa052456eea3977cc002d0260cd4621e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aff304ac84a6706d19949179c127382d8"><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_1OverlayLabeller.html#aff304ac84a6706d19949179c127382d8">unmarkDuplicateEdgesFromResultArea</a> ()</td></tr>
<tr class="separator:aff304ac84a6706d19949179c127382d8"><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:a2215cef1d008bd843afee9ae3c3a2c86"><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_1OverlayLabeller.html#a2215cef1d008bd843afee9ae3c3a2c86">labelCollapsedEdges</a> ()</td></tr>
<tr class="separator:a2215cef1d008bd843afee9ae3c3a2c86"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a97b201b8ad6436b21fca2c398f756f26"><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_1OverlayLabeller.html#a97b201b8ad6436b21fca2c398f756f26">labelCollapsedEdge</a> (<a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> *edge, int geomIndex)</td></tr>
<tr class="separator:a97b201b8ad6436b21fca2c398f756f26"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a193ae8afe0f38cd3e18b54fb060c0c2d"><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_1OverlayLabeller.html#a193ae8afe0f38cd3e18b54fb060c0c2d">labelConnectedLinearEdges</a> ()</td></tr>
<tr class="separator:a193ae8afe0f38cd3e18b54fb060c0c2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa4bd7e35f09e90c79b7f25423466f01f"><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_1OverlayLabeller.html#aa4bd7e35f09e90c79b7f25423466f01f">propagateLinearLocations</a> (int geomIndex)</td></tr>
<tr class="separator:aa4bd7e35f09e90c79b7f25423466f01f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a39224b017ada684399db481894bb3431"><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_1OverlayLabeller.html#a39224b017ada684399db481894bb3431">labelDisconnectedEdges</a> ()</td></tr>
<tr class="separator:a39224b017ada684399db481894bb3431"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a155e97061a3b1f82b2f3c258e5405ba7"><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_1OverlayLabeller.html#a155e97061a3b1f82b2f3c258e5405ba7">labelDisconnectedEdge</a> (<a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> *edge, int geomIndex)</td></tr>
<tr class="separator:a155e97061a3b1f82b2f3c258e5405ba7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a97d81c1a91e9d6320dad1f4470ceed25"><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_1OverlayLabeller.html#a97d81c1a91e9d6320dad1f4470ceed25">locateEdge</a> (int geomIndex, <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> *edge)</td></tr>
<tr class="separator:a97d81c1a91e9d6320dad1f4470ceed25"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab98cd528b73f39d59009ec8b9044f4d1"><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_1OverlayLabeller.html#ab98cd528b73f39d59009ec8b9044f4d1">locateEdgeBothEnds</a> (int geomIndex, <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> *edge)</td></tr>
<tr class="separator:ab98cd528b73f39d59009ec8b9044f4d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a010a3acfbf7fbe513829e55cf1e29b59"><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_1OverlayLabeller.html#a010a3acfbf7fbe513829e55cf1e29b59">labelAreaNodeEdges</a> (std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> * &gt; &amp;nodes)</td></tr>
<tr class="separator:a010a3acfbf7fbe513829e55cf1e29b59"><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:a5cfef929bd1a409c3334ef5fe7913747"><td class="memItemLeft" align="right" valign="top">static <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_1OverlayLabeller.html#a5cfef929bd1a409c3334ef5fe7913747">findPropagationStartEdge</a> (<a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> *nodeEdge, int geomIndex)</td></tr>
<tr class="separator:a5cfef929bd1a409c3334ef5fe7913747"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a92fe0eb8662d448e25733551f11ba098"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayLabeller.html#a92fe0eb8662d448e25733551f11ba098">propagateLinearLocationAtNode</a> (<a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> *eNode, int geomIndex, bool isInputLine, std::deque&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> * &gt; &amp;edgeStack)</td></tr>
<tr class="separator:a92fe0eb8662d448e25733551f11ba098"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a48e7a9514b215d2ee11c00fcd4cdc38b"><td class="memItemLeft" align="right" valign="top">static std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayLabeller.html#a48e7a9514b215d2ee11c00fcd4cdc38b">findLinearEdgesWithLocation</a> (std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> * &gt; &amp;<a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayLabeller.html#aa08db1145ce8e3cacd579b2989d2269b">edges</a>, int geomIndex)</td></tr>
<tr class="separator:a48e7a9514b215d2ee11c00fcd4cdc38b"><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:aef06c6a71ecaecc2b99768d31845c381"><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_1OverlayLabeller.html#aef06c6a71ecaecc2b99768d31845c381">graph</a></td></tr>
<tr class="separator:aef06c6a71ecaecc2b99768d31845c381"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a161df94add3571fd88bda5d9604b41f8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1InputGeometry.html">InputGeometry</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayLabeller.html#a161df94add3571fd88bda5d9604b41f8">inputGeometry</a></td></tr>
<tr class="separator:a161df94add3571fd88bda5d9604b41f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa08db1145ce8e3cacd579b2989d2269b"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> * &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayLabeller.html#aa08db1145ce8e3cacd579b2989d2269b">edges</a></td></tr>
<tr class="separator:aa08db1145ce8e3cacd579b2989d2269b"><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>Definition at line <a class="el" href="OverlayLabeller_8h_source.html#l00044">44</a> of file <a class="el" href="OverlayLabeller_8h_source.html">OverlayLabeller.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a1708bdb321795fae917ff8d70bf6df59"></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::OverlayLabeller::OverlayLabeller </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"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1InputGeometry.html">InputGeometry</a> *&#160;</td>
<td class="paramname"><em>p_inputGeometry</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="OverlayLabeller_8h_source.html#l00163">163</a> of file <a class="el" href="OverlayLabeller_8h_source.html">OverlayLabeller.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a525abf5511dbdf369623e0f0dafbd32e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void geos::operation::overlayng::OverlayLabeller::computeLabelling </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Computes the topological labelling for the edges in the graph-&gt; </p>
</div>
</div>
<a class="anchor" id="a48e7a9514b215d2ee11c00fcd4cdc38b"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static std::vector&lt;<a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a>*&gt; geos::operation::overlayng::OverlayLabeller::findLinearEdgesWithLocation </td>
<td>(</td>
<td class="paramtype">std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> * &gt; &amp;&#160;</td>
<td class="paramname"><em>edges</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></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 all OverlayEdges which are linear (i.e. line or collapsed) and have a known location for the given input geometry. </p>
</div>
</div>
<a class="anchor" id="a5cfef929bd1a409c3334ef5fe7913747"></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_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a>* geos::operation::overlayng::OverlayLabeller::findPropagationStartEdge </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>nodeEdge</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></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 a boundary edge for this geom, if one exists. </p>
</div>
</div>
<a class="anchor" id="a010a3acfbf7fbe513829e55cf1e29b59"></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::OverlayLabeller::labelAreaNodeEdges </td>
<td>(</td>
<td class="paramtype">std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> * &gt; &amp;&#160;</td>
<td class="paramname"><em>nodes</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>Labels edges around nodes based on the arrangement of incident area boundary edges. Also propagates the labelling to connected linear edges. </p>
</div>
</div>
<a class="anchor" id="a97b201b8ad6436b21fca2c398f756f26"></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::OverlayLabeller::labelCollapsedEdge </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>
</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></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="a2215cef1d008bd843afee9ae3c3a2c86"></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::OverlayLabeller::labelCollapsedEdges </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>At this point collapsed edges with unknown location must be disconnected from the boundary edges of the parent (because otherwise the location would have been propagated from them). This can occur with a collapsed hole or shell. The edges can be labeled based on their parent ring role (shell or hole). (This cannot be done earlier, because the location based on the boundary edges must take precedence. There are situations where a collapsed edge has a location which is different to its ring role - e.g. a narrow gore in a polygon, which is in the interior of the reduced polygon, but whose ring role would imply the location EXTERIOR.)</p>
<p>Note that collapsed edges can NOT have location determined via a PIP location check, because that is done against the unreduced input geometry, which may give an invalid result due to topology collapse.</p>
<p>The labeling is propagated to other connected linear edges, since there may be NOT_PART edges which are connected, and they can be labeled in the same way. (These would get labeled anyway during subsequent disconnected labeling pass, but may be more efficient and accurate to do it here.) </p>
</div>
</div>
<a class="anchor" id="a193ae8afe0f38cd3e18b54fb060c0c2d"></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::OverlayLabeller::labelConnectedLinearEdges </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>There can be edges which have unknown location but are connected to a Line edge with known location. In this case line location is propagated to the connected edges. </p>
</div>
</div>
<a class="anchor" id="a155e97061a3b1f82b2f3c258e5405ba7"></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::OverlayLabeller::labelDisconnectedEdge </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>
</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></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 location of an edge relative to a target input geometry. The edge has no location information because it is disconnected from other edges that would provide that information. The location is determined by checking if the edge lies inside the target geometry area (if any). </p>
</div>
</div>
<a class="anchor" id="a39224b017ada684399db481894bb3431"></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::OverlayLabeller::labelDisconnectedEdges </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>At this point there may still be edges which have unknown location relative to an input geometry. This must be because they are NOT_PART edges for that geometry, and are disconnected from any edges of that geometry. An example of this is rings of one geometry wholly contained in another geometry. The location must be fully determined to compute a correct result for all overlay operations.</p>
<p>If the input geometry is an Area the edge location can be determined via a PIP test. If the input is not an Area the location is EXTERIOR. </p>
</div>
</div>
<a class="anchor" id="a97d81c1a91e9d6320dad1f4470ceed25"></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::OverlayLabeller::locateEdge </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>geomIndex</em>, </td>
</tr>
<tr>
<td class="paramkey"></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>&#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">
<p>Determines the <a class="el" href="">Location</a> for an edge within an Area geometry via point-in-polygon location.</p>
<p>NOTE this is only safe to use for disconnected edges, since the test is carried out against the original input geometry, and precision reduction may cause incorrect results for edges which are close enough to a boundary to become connected. </p>
</div>
</div>
<a class="anchor" id="ab98cd528b73f39d59009ec8b9044f4d1"></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::OverlayLabeller::locateEdgeBothEnds </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>geomIndex</em>, </td>
</tr>
<tr>
<td class="paramkey"></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>&#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">
<p>Determines the <a class="el" href="">Location</a> for an edge within an Area geometry via point-in-polygon location, by checking that both endpoints are interior to the target geometry. Checking both endpoints ensures correct results in the presence of topology collapse. </p>
<p>NOTE this is only safe to use for disconnected edges, since the test is carried out against the original input geometry, and precision reduction may cause incorrect results for edges which are close enough to a boundary to become connected. </p>
</div>
</div>
<a class="anchor" id="afa052456eea3977cc002d0260cd4621e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void geos::operation::overlayng::OverlayLabeller::markInResultArea </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>e</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>overlayOpCode</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Marks an edge which forms part of the boundary of the result area. This is determined by the overlay operation being executed, and the location of the edge. The relevant location is either the right side of a boundary edge, or the line location of a non-boundary edge. </p>
</div>
</div>
<a class="anchor" id="a08c035d3e732441d15cfab5b8da635ab"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void geos::operation::overlayng::OverlayLabeller::markResultAreaEdges </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>overlayOpCode</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="af7978d6942687e8406a7a4826b0d4208"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void geos::operation::overlayng::OverlayLabeller::propagateAreaLocations </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>nodeEdge</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></td>
</tr>
</table>
</div><div class="memdoc">
<p>Scans around a node CCW, propagating the side labels for a given area geometry to all edges (and their sym) with unknown locations for that geometry. </p>
</div>
</div>
<a class="anchor" id="a92fe0eb8662d448e25733551f11ba098"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void geos::operation::overlayng::OverlayLabeller::propagateLinearLocationAtNode </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>eNode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>geomIndex</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>isInputLine</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::deque&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> * &gt; &amp;&#160;</td>
<td class="paramname"><em>edgeStack</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">static</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="aa4bd7e35f09e90c79b7f25423466f01f"></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::OverlayLabeller::propagateLinearLocations </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>geomIndex</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="aff304ac84a6706d19949179c127382d8"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void geos::operation::overlayng::OverlayLabeller::unmarkDuplicateEdgesFromResultArea </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Unmarks result area edges where the sym edge is also marked as in the result. This has the effect of merging edge-adjacent result areas, as required by polygon validity rules. </p>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="aa08db1145ce8e3cacd579b2989d2269b"></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;<a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a>*&gt;&amp; geos::operation::overlayng::OverlayLabeller::edges</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="OverlayLabeller_8h_source.html#l00051">51</a> of file <a class="el" href="OverlayLabeller_8h_source.html">OverlayLabeller.h</a>.</p>
</div>
</div>
<a class="anchor" id="aef06c6a71ecaecc2b99768d31845c381"></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::OverlayLabeller::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="OverlayLabeller_8h_source.html#l00049">49</a> of file <a class="el" href="OverlayLabeller_8h_source.html">OverlayLabeller.h</a>.</p>
</div>
</div>
<a class="anchor" id="a161df94add3571fd88bda5d9604b41f8"></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_1InputGeometry.html">InputGeometry</a>* geos::operation::overlayng::OverlayLabeller::inputGeometry</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="OverlayLabeller_8h_source.html#l00050">50</a> of file <a class="el" href="OverlayLabeller_8h_source.html">OverlayLabeller.h</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="OverlayLabeller_8h_source.html">OverlayLabeller.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>