geos_390_docs/classgeos_1_1operation_1_1g...

700 lines
36 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::geounion::OverlapUnion 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_1geounion.html">geounion</a></li><li class="navelem"><a class="el" href="classgeos_1_1operation_1_1geounion_1_1OverlapUnion.html">OverlapUnion</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_1geounion_1_1OverlapUnion-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">geos::operation::geounion::OverlapUnion Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Unions MultiPolygons efficiently by using full topological union only for polygons which may overlap by virtue of intersecting the common area of the inputs.
<a href="classgeos_1_1operation_1_1geounion_1_1OverlapUnion.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="OverlapUnion_8h_source.html">OverlapUnion.h</a>&gt;</code></p>
<div class="dynheader">
Collaboration diagram for geos::operation::geounion::OverlapUnion:</div>
<div class="dyncontent">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="classgeos_1_1operation_1_1geounion_1_1OverlapUnion__coll__graph.svg" width="100%" height="520"><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:a5d0df327659e0ca00a4e00d88b985af1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1geounion_1_1OverlapUnion.html#a5d0df327659e0ca00a4e00d88b985af1">OverlapUnion</a> (const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *p_g0, const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *p_g1, <a class="el" href="classgeos_1_1operation_1_1geounion_1_1UnionStrategy.html">geounion::UnionStrategy</a> *unionFun)</td></tr>
<tr class="separator:a5d0df327659e0ca00a4e00d88b985af1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75086c7d4d2cd5d3bfa458b36d71a3af"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1geounion_1_1OverlapUnion.html#a75086c7d4d2cd5d3bfa458b36d71a3af">OverlapUnion</a> (const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *p_g0, const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *p_g1)</td></tr>
<tr class="separator:a75086c7d4d2cd5d3bfa458b36d71a3af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a483a73aa542924195881c6f6ae924d8b"><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_1geounion_1_1OverlapUnion.html#a483a73aa542924195881c6f6ae924d8b">doUnion</a> ()</td></tr>
<tr class="separator:a483a73aa542924195881c6f6ae924d8b"><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:a618bf8912d9235cbb52a83aa3c3b563f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1geom_1_1Envelope.html">geom::Envelope</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1geounion_1_1OverlapUnion.html#a618bf8912d9235cbb52a83aa3c3b563f">overlapEnvelope</a> (const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *geom0, const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *geom1)</td></tr>
<tr class="separator:a618bf8912d9235cbb52a83aa3c3b563f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a67b66ca5691d0acd41d247d91889eaa3"><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_1geounion_1_1OverlapUnion.html#a67b66ca5691d0acd41d247d91889eaa3">extractByEnvelope</a> (const <a class="el" href="classgeos_1_1geom_1_1Envelope.html">geom::Envelope</a> &amp;env, const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *geom, std::vector&lt; std::unique_ptr&lt; <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> &gt;&gt; &amp;disjointGeoms)</td></tr>
<tr class="separator:a67b66ca5691d0acd41d247d91889eaa3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeea0fbfb77ca1bd0ecfd538e8faeb28c"><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_1geounion_1_1OverlapUnion.html#aeea0fbfb77ca1bd0ecfd538e8faeb28c">combine</a> (std::unique_ptr&lt; <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> &gt; &amp;unionGeom, std::vector&lt; std::unique_ptr&lt; <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> &gt;&gt; &amp;disjointPolys)</td></tr>
<tr class="separator:aeea0fbfb77ca1bd0ecfd538e8faeb28c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3c16c27d1cd103293880d7f1e554360c"><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_1geounion_1_1OverlapUnion.html#a3c16c27d1cd103293880d7f1e554360c">unionFull</a> (const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *geom0, const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *geom1)</td></tr>
<tr class="separator:a3c16c27d1cd103293880d7f1e554360c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aef477069ee4d99ff6ba02db6e47d8bee"><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_1geounion_1_1OverlapUnion.html#aef477069ee4d99ff6ba02db6e47d8bee">unionBuffer</a> (const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *geom0, const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *geom1)</td></tr>
<tr class="separator:aef477069ee4d99ff6ba02db6e47d8bee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae489fe2f7a13b3a675d5cbc09a162de4"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1geounion_1_1OverlapUnion.html#ae489fe2f7a13b3a675d5cbc09a162de4">isBorderSegmentsSame</a> (const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *result, const <a class="el" href="classgeos_1_1geom_1_1Envelope.html">geom::Envelope</a> &amp;env)</td></tr>
<tr class="separator:ae489fe2f7a13b3a675d5cbc09a162de4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac28535d73ee90a9d4e19cdc18a7f6e2d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1geounion_1_1OverlapUnion.html#ac28535d73ee90a9d4e19cdc18a7f6e2d">isEqual</a> (std::vector&lt; <a class="el" href="classgeos_1_1geom_1_1LineSegment.html">geom::LineSegment</a> &gt; &amp;segs0, std::vector&lt; <a class="el" href="classgeos_1_1geom_1_1LineSegment.html">geom::LineSegment</a> &gt; &amp;segs1)</td></tr>
<tr class="separator:ac28535d73ee90a9d4e19cdc18a7f6e2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a404d754fe46a677efcd4686c37669f"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classgeos_1_1geom_1_1LineSegment.html">geom::LineSegment</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1geounion_1_1OverlapUnion.html#a8a404d754fe46a677efcd4686c37669f">extractBorderSegments</a> (const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *geom0, const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *geom1, const <a class="el" href="classgeos_1_1geom_1_1Envelope.html">geom::Envelope</a> &amp;env)</td></tr>
<tr class="separator:a8a404d754fe46a677efcd4686c37669f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a32cff0cba7445344e3f44650aa678c10"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1geounion_1_1OverlapUnion.html#a32cff0cba7445344e3f44650aa678c10">extractBorderSegments</a> (const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *geom, const <a class="el" href="classgeos_1_1geom_1_1Envelope.html">geom::Envelope</a> &amp;penv, std::vector&lt; <a class="el" href="classgeos_1_1geom_1_1LineSegment.html">geom::LineSegment</a> &gt; &amp;psegs)</td></tr>
<tr class="separator:a32cff0cba7445344e3f44650aa678c10"><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:a6b3edb5385c26d7095d359ebc4fd319d"><td class="memItemLeft" align="right" valign="top">const <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_1geounion_1_1OverlapUnion.html#a6b3edb5385c26d7095d359ebc4fd319d">g0</a></td></tr>
<tr class="separator:a6b3edb5385c26d7095d359ebc4fd319d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae322c050934f0bfc461c5d3582cef518"><td class="memItemLeft" align="right" valign="top">const <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_1geounion_1_1OverlapUnion.html#ae322c050934f0bfc461c5d3582cef518">g1</a></td></tr>
<tr class="separator:ae322c050934f0bfc461c5d3582cef518"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a95d458971ec75d481b17a74159dd36ef"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1operation_1_1geounion_1_1UnionStrategy.html">geounion::UnionStrategy</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1geounion_1_1OverlapUnion.html#a95d458971ec75d481b17a74159dd36ef">unionFunction</a></td></tr>
<tr class="separator:a95d458971ec75d481b17a74159dd36ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa3be93297e22c9b20cab228093fab00a"><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_1geounion_1_1OverlapUnion.html#aa3be93297e22c9b20cab228093fab00a">geomFactory</a></td></tr>
<tr class="separator:aa3be93297e22c9b20cab228093fab00a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a565168e9d2d1a8fbc218cca602157df8"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1geounion_1_1OverlapUnion.html#a565168e9d2d1a8fbc218cca602157df8">isUnionSafe</a></td></tr>
<tr class="separator:a565168e9d2d1a8fbc218cca602157df8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad1d8337ae1f20fa444a47198bdb1cb7d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1operation_1_1geounion_1_1ClassicUnionStrategy.html">geounion::ClassicUnionStrategy</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1geounion_1_1OverlapUnion.html#ad1d8337ae1f20fa444a47198bdb1cb7d">defaultUnionFunction</a></td></tr>
<tr class="separator:ad1d8337ae1f20fa444a47198bdb1cb7d"><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>Unions MultiPolygons efficiently by using full topological union only for polygons which may overlap by virtue of intersecting the common area of the inputs. </p>
<p>Other polygons are simply combined with the union result, which is much more performant.</p>
<p>This situation is likely to occur during cascaded polygon union, since the partitioning of polygons is done heuristically and thus may group disjoint polygons which can lie far apart. It may also occur in real world data which contains many disjoint polygons (e.g. polygons representing parcels on different street blocks).</p>
<h1>Algorithm</h1>
<p>The overlap region is determined as the common envelope of intersection. The input polygons are partitioned into two sets:</p>
<ul>
<li>Overlapping: Polygons which intersect the overlap region, and thus potentially overlap each other</li>
<li>Disjoint: Polygons which are disjoint from (lie wholly outside) the overlap region</li>
</ul>
<p>The Overlapping set is fully unioned, and then combined with the Disjoint set. Performing a simple combine works because the disjoint polygons do not interact with each other (since the inputs are valid MultiPolygons). They also do not interact with the Overlapping polygons, since they are outside their envelope.</p>
<h1>Verification</h1>
<p>In the general case the Overlapping set of polygons will extend beyond the overlap envelope. This means that the union result will extend beyond the overlap region. There is a small chance that the topological union of the overlap region will shift the result linework enough that the result geometry intersects one of the Disjoint geometries. This case is detected and if it occurs is remedied by falling back to performing a full union of the original inputs. Detection is done by a fairly efficient comparison of edge segments which extend beyond the overlap region. If any segments have changed then there is a risk of introduced intersections, and full union is performed.</p>
<p>This situation has not been observed in JTS using floating precision, but it could happen due to snapping. It has been observed in other APIs (e.g. GEOS) due to more aggressive snapping. And it will be more likely to happen if a snap-rounding overlay is used.</p>
<p>DEPRECATED: This optimization has been removed, since it impairs performance.</p>
<dl class="section author"><dt>Author</dt><dd>mbdavis </dd></dl>
<p>Definition at line <a class="el" href="OverlapUnion_8h_source.html#l00097">97</a> of file <a class="el" href="OverlapUnion_8h_source.html">OverlapUnion.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a5d0df327659e0ca00a4e00d88b985af1"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">geos::operation::geounion::OverlapUnion::OverlapUnion </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>p_g0</em>, </td>
</tr>
<tr>
<td class="paramkey"></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>p_g1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classgeos_1_1operation_1_1geounion_1_1UnionStrategy.html">geounion::UnionStrategy</a> *&#160;</td>
<td class="paramname"><em>unionFun</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="OverlapUnion_8h_source.html#l00101">101</a> of file <a class="el" href="OverlapUnion_8h_source.html">OverlapUnion.h</a>.</p>
</div>
</div>
<a class="anchor" id="a75086c7d4d2cd5d3bfa458b36d71a3af"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">geos::operation::geounion::OverlapUnion::OverlapUnion </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>p_g0</em>, </td>
</tr>
<tr>
<td class="paramkey"></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>p_g1</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="OverlapUnion_8h_source.html#l00109">109</a> of file <a class="el" href="OverlapUnion_8h_source.html">OverlapUnion.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="aeea0fbfb77ca1bd0ecfd538e8faeb28c"></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::geounion::OverlapUnion::combine </td>
<td>(</td>
<td class="paramtype">std::unique_ptr&lt; <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>unionGeom</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; std::unique_ptr&lt; <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> &gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>disjointPolys</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="a483a73aa542924195881c6f6ae924d8b"></a>
<div class="memitem">
<div class="memproto">
<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::geounion::OverlapUnion::doUnion </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a8a404d754fe46a677efcd4686c37669f"></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_1geom_1_1LineSegment.html">geom::LineSegment</a>&gt; geos::operation::geounion::OverlapUnion::extractBorderSegments </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>geom0</em>, </td>
</tr>
<tr>
<td class="paramkey"></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>geom1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Envelope.html">geom::Envelope</a> &amp;&#160;</td>
<td class="paramname"><em>env</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="a32cff0cba7445344e3f44650aa678c10"></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::geounion::OverlapUnion::extractBorderSegments </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>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Envelope.html">geom::Envelope</a> &amp;&#160;</td>
<td class="paramname"><em>penv</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; <a class="el" href="classgeos_1_1geom_1_1LineSegment.html">geom::LineSegment</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>psegs</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="a67b66ca5691d0acd41d247d91889eaa3"></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::geounion::OverlapUnion::extractByEnvelope </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Envelope.html">geom::Envelope</a> &amp;&#160;</td>
<td class="paramname"><em>env</em>, </td>
</tr>
<tr>
<td class="paramkey"></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>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; std::unique_ptr&lt; <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> &gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>disjointGeoms</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="ae489fe2f7a13b3a675d5cbc09a162de4"></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::geounion::OverlapUnion::isBorderSegmentsSame </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>result</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Envelope.html">geom::Envelope</a> &amp;&#160;</td>
<td class="paramname"><em>env</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="ac28535d73ee90a9d4e19cdc18a7f6e2d"></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::geounion::OverlapUnion::isEqual </td>
<td>(</td>
<td class="paramtype">std::vector&lt; <a class="el" href="classgeos_1_1geom_1_1LineSegment.html">geom::LineSegment</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>segs0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; <a class="el" href="classgeos_1_1geom_1_1LineSegment.html">geom::LineSegment</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>segs1</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="a618bf8912d9235cbb52a83aa3c3b563f"></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_1Envelope.html">geom::Envelope</a> geos::operation::geounion::OverlapUnion::overlapEnvelope </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>geom0</em>, </td>
</tr>
<tr>
<td class="paramkey"></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>geom1</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="aef477069ee4d99ff6ba02db6e47d8bee"></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::geounion::OverlapUnion::unionBuffer </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>geom0</em>, </td>
</tr>
<tr>
<td class="paramkey"></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>geom1</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="a3c16c27d1cd103293880d7f1e554360c"></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::geounion::OverlapUnion::unionFull </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>geom0</em>, </td>
</tr>
<tr>
<td class="paramkey"></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>geom1</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>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="ad1d8337ae1f20fa444a47198bdb1cb7d"></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_1geounion_1_1ClassicUnionStrategy.html">geounion::ClassicUnionStrategy</a> geos::operation::geounion::OverlapUnion::defaultUnionFunction</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="OverlapUnion_8h_source.html#l00124">124</a> of file <a class="el" href="OverlapUnion_8h_source.html">OverlapUnion.h</a>.</p>
</div>
</div>
<a class="anchor" id="a6b3edb5385c26d7095d359ebc4fd319d"></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_1Geometry.html">geom::Geometry</a>* geos::operation::geounion::OverlapUnion::g0</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="OverlapUnion_8h_source.html#l00118">118</a> of file <a class="el" href="OverlapUnion_8h_source.html">OverlapUnion.h</a>.</p>
</div>
</div>
<a class="anchor" id="ae322c050934f0bfc461c5d3582cef518"></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_1Geometry.html">geom::Geometry</a>* geos::operation::geounion::OverlapUnion::g1</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="OverlapUnion_8h_source.html#l00119">119</a> of file <a class="el" href="OverlapUnion_8h_source.html">OverlapUnion.h</a>.</p>
</div>
</div>
<a class="anchor" id="aa3be93297e22c9b20cab228093fab00a"></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::geounion::OverlapUnion::geomFactory</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="OverlapUnion_8h_source.html#l00121">121</a> of file <a class="el" href="OverlapUnion_8h_source.html">OverlapUnion.h</a>.</p>
</div>
</div>
<a class="anchor" id="a565168e9d2d1a8fbc218cca602157df8"></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::geounion::OverlapUnion::isUnionSafe</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="OverlapUnion_8h_source.html#l00122">122</a> of file <a class="el" href="OverlapUnion_8h_source.html">OverlapUnion.h</a>.</p>
</div>
</div>
<a class="anchor" id="a95d458971ec75d481b17a74159dd36ef"></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_1geounion_1_1UnionStrategy.html">geounion::UnionStrategy</a>* geos::operation::geounion::OverlapUnion::unionFunction</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="OverlapUnion_8h_source.html#l00120">120</a> of file <a class="el" href="OverlapUnion_8h_source.html">OverlapUnion.h</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="OverlapUnion_8h_source.html">OverlapUnion.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>