geos_390_docs/classgeos_1_1operation_1_1o...

208 lines
11 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::EdgeMerger 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_1EdgeMerger.html">EdgeMerger</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-attribs">Private Attributes</a> &#124;
<a href="classgeos_1_1operation_1_1overlayng_1_1EdgeMerger-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">geos::operation::overlayng::EdgeMerger Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="EdgeMerger_8h_source.html">EdgeMerger.h</a>&gt;</code></p>
<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:a61cf2ff4835908eb7389856c9d63e3c1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1EdgeMerger.html#a61cf2ff4835908eb7389856c9d63e3c1">EdgeMerger</a> (std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1Edge.html">Edge</a> * &gt; &amp;p_edges)</td></tr>
<tr class="separator:a61cf2ff4835908eb7389856c9d63e3c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a63b3eafd838cbdabc5cd5a7e931c36c5"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1Edge.html">Edge</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1EdgeMerger.html#a63b3eafd838cbdabc5cd5a7e931c36c5">merge</a> ()</td></tr>
<tr class="separator:a63b3eafd838cbdabc5cd5a7e931c36c5"><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:adf0d3e7f93c54e8951cde9be3ee4aac5"><td class="memItemLeft" align="right" valign="top">static std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1Edge.html">Edge</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1EdgeMerger.html#adf0d3e7f93c54e8951cde9be3ee4aac5">merge</a> (std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1Edge.html">Edge</a> * &gt; &amp;<a class="el" href="classgeos_1_1operation_1_1overlayng_1_1EdgeMerger.html#a01befc86ba55a661275f022a7301decd">edges</a>)</td></tr>
<tr class="separator:adf0d3e7f93c54e8951cde9be3ee4aac5"><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:a01befc86ba55a661275f022a7301decd"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1Edge.html">Edge</a> * &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1EdgeMerger.html#a01befc86ba55a661275f022a7301decd">edges</a></td></tr>
<tr class="separator:a01befc86ba55a661275f022a7301decd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adf4cebd4d9926698c80fab6f3bb9669c"><td class="memItemLeft" align="right" valign="top">std::map&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1EdgeKey.html">EdgeKey</a>, <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1Edge.html">Edge</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1EdgeMerger.html#adf4cebd4d9926698c80fab6f3bb9669c">edgeMap</a></td></tr>
<tr class="separator:adf4cebd4d9926698c80fab6f3bb9669c"><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>Performs merging on the noded edges of the input geometries. Merging takes place on edges which are coincident (i.e. have the same coordinate list, modulo direction). The following situations can occur:</p>
<ul>
<li>Coincident edges from different input geometries have their labels combined</li>
<li>Coincident edges from the same area geometry indicate a topology collapse. In this case the topology locations are "summed" to provide a final assignment of side location</li>
<li>Coincident edges from the same linear geometry can simply be merged using the same ON location</li>
</ul>
<p>One constraint that is maintained is that the direction of linear edges should be preserved if possible (which is the case if there is no other coincident edge, or if all coincident edges have the same direction). This ensures that the overlay output line direction will be as consistent as possible with input lines.</p>
<dl class="section author"><dt>Author</dt><dd>mdavis </dd></dl>
<p>Definition at line <a class="el" href="EdgeMerger_8h_source.html#l00065">65</a> of file <a class="el" href="EdgeMerger_8h_source.html">EdgeMerger.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a61cf2ff4835908eb7389856c9d63e3c1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">geos::operation::overlayng::EdgeMerger::EdgeMerger </td>
<td>(</td>
<td class="paramtype">std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1Edge.html">Edge</a> * &gt; &amp;&#160;</td>
<td class="paramname"><em>p_edges</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="adf0d3e7f93c54e8951cde9be3ee4aac5"></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_1Edge.html">Edge</a>*&gt; geos::operation::overlayng::EdgeMerger::merge </td>
<td>(</td>
<td class="paramtype">std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1Edge.html">Edge</a> * &gt; &amp;&#160;</td>
<td class="paramname"><em>edges</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">
</div>
</div>
<a class="anchor" id="a63b3eafd838cbdabc5cd5a7e931c36c5"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;<a class="el" href="classgeos_1_1operation_1_1overlayng_1_1Edge.html">Edge</a>*&gt; geos::operation::overlayng::EdgeMerger::merge </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="adf4cebd4d9926698c80fab6f3bb9669c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::map&lt;<a class="el" href="classgeos_1_1operation_1_1overlayng_1_1EdgeKey.html">EdgeKey</a>, <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1Edge.html">Edge</a>*&gt; geos::operation::overlayng::EdgeMerger::edgeMap</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="EdgeMerger_8h_source.html#l00072">72</a> of file <a class="el" href="EdgeMerger_8h_source.html">EdgeMerger.h</a>.</p>
</div>
</div>
<a class="anchor" id="a01befc86ba55a661275f022a7301decd"></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_1Edge.html">Edge</a>*&gt;&amp; geos::operation::overlayng::EdgeMerger::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="EdgeMerger_8h_source.html#l00071">71</a> of file <a class="el" href="EdgeMerger_8h_source.html">EdgeMerger.h</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="EdgeMerger_8h_source.html">EdgeMerger.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>