geos_390_docs/classgeos_1_1operation_1_1o...

395 lines
20 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::LineLimiter 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_1LineLimiter.html">LineLimiter</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_1LineLimiter-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">geos::operation::overlayng::LineLimiter Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="LineLimiter_8h_source.html">LineLimiter.h</a>&gt;</code></p>
<div class="dynheader">
Collaboration diagram for geos::operation::overlayng::LineLimiter:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classgeos_1_1operation_1_1overlayng_1_1LineLimiter__coll__graph.svg" width="475" height="147"><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:ace5097f9696e3bae20b7ad1405363b5b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1LineLimiter.html#ace5097f9696e3bae20b7ad1405363b5b">LineLimiter</a> (const <a class="el" href="classgeos_1_1geom_1_1Envelope.html">Envelope</a> *env)</td></tr>
<tr class="separator:ace5097f9696e3bae20b7ad1405363b5b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a87c9cfa1125b70a8aaea49638f00c757"><td class="memItemLeft" align="right" valign="top">std::vector&lt; std::unique_ptr&lt; <a class="el" href="classgeos_1_1geom_1_1CoordinateArraySequence.html">CoordinateArraySequence</a> &gt; &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1LineLimiter.html#a87c9cfa1125b70a8aaea49638f00c757">limit</a> (const <a class="el" href="classgeos_1_1geom_1_1CoordinateSequence.html">CoordinateSequence</a> *pts)</td></tr>
<tr class="separator:a87c9cfa1125b70a8aaea49638f00c757"><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:af57e208f649a7d4db482d5b9411f1707"><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_1LineLimiter.html#af57e208f649a7d4db482d5b9411f1707">addPoint</a> (const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">Coordinate</a> *p)</td></tr>
<tr class="separator:af57e208f649a7d4db482d5b9411f1707"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acde12915373cb2edb1c2a200f04d95a9"><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_1LineLimiter.html#acde12915373cb2edb1c2a200f04d95a9">addOutside</a> (const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">Coordinate</a> *p)</td></tr>
<tr class="separator:acde12915373cb2edb1c2a200f04d95a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1140bce8e30bcf60ff85be6272ddecb7"><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_1LineLimiter.html#a1140bce8e30bcf60ff85be6272ddecb7">isLastSegmentIntersecting</a> (const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">Coordinate</a> *p)</td></tr>
<tr class="separator:a1140bce8e30bcf60ff85be6272ddecb7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a35449c5c9ca2ab7484ee6d22f7691cf1"><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_1LineLimiter.html#a35449c5c9ca2ab7484ee6d22f7691cf1">isSectionOpen</a> ()</td></tr>
<tr class="separator:a35449c5c9ca2ab7484ee6d22f7691cf1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aded00461b42c6ad02554c34d2cf4e278"><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_1LineLimiter.html#aded00461b42c6ad02554c34d2cf4e278">startSection</a> ()</td></tr>
<tr class="separator:aded00461b42c6ad02554c34d2cf4e278"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1e2c6663ecb416870a0bfed3877e3e63"><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_1LineLimiter.html#a1e2c6663ecb416870a0bfed3877e3e63">finishSection</a> ()</td></tr>
<tr class="separator:a1e2c6663ecb416870a0bfed3877e3e63"><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:a39f49f654ec1898a6ed51c1707afedef"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classgeos_1_1geom_1_1Envelope.html">Envelope</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1LineLimiter.html#a39f49f654ec1898a6ed51c1707afedef">limitEnv</a></td></tr>
<tr class="separator:a39f49f654ec1898a6ed51c1707afedef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abbf3a5ff6c9963661080193e5b0e4a8c"><td class="memItemLeft" align="right" valign="top">std::unique_ptr&lt; std::vector&lt; <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">Coordinate</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1LineLimiter.html#abbf3a5ff6c9963661080193e5b0e4a8c">ptList</a></td></tr>
<tr class="separator:abbf3a5ff6c9963661080193e5b0e4a8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a01da986f02ce2d1447bf9319e8ccb07c"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">Coordinate</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1LineLimiter.html#a01da986f02ce2d1447bf9319e8ccb07c">lastOutside</a></td></tr>
<tr class="separator:a01da986f02ce2d1447bf9319e8ccb07c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7acdb86e9c60c280bd74a78b83c08ed9"><td class="memItemLeft" align="right" valign="top">std::vector&lt; std::unique_ptr&lt; <a class="el" href="classgeos_1_1geom_1_1CoordinateArraySequence.html">CoordinateArraySequence</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1LineLimiter.html#a7acdb86e9c60c280bd74a78b83c08ed9">sections</a></td></tr>
<tr class="separator:a7acdb86e9c60c280bd74a78b83c08ed9"><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>Limits the segments in a list of segments to those which intersect an envelope. This creates zero or more sections of the input segment sequences, containing only line segments which intersect the limit envelope. Segments are not clipped, since that can move line segments enough to alter topology, and it happens in the overlay in any case. This can substantially reduce the number of vertices which need to be processed during overlay.</p>
<p>This optimization is only applicable to Line geometries, since it does not maintain the closed topology of rings. Polygonal geometries are optimized using the <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1RingClipper.html">RingClipper</a>.</p>
<dl class="section author"><dt>Author</dt><dd>Martin Davis </dd></dl>
<p>Definition at line <a class="el" href="LineLimiter_8h_source.html#l00056">56</a> of file <a class="el" href="LineLimiter_8h_source.html">LineLimiter.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="ace5097f9696e3bae20b7ad1405363b5b"></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::LineLimiter::LineLimiter </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Envelope.html">Envelope</a> *&#160;</td>
<td class="paramname"><em>env</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="LineLimiter_8h_source.html#l00077">77</a> of file <a class="el" href="LineLimiter_8h_source.html">LineLimiter.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="acde12915373cb2edb1c2a200f04d95a9"></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::LineLimiter::addOutside </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">Coordinate</a> *&#160;</td>
<td class="paramname"><em>p</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="af57e208f649a7d4db482d5b9411f1707"></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::LineLimiter::addPoint </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">Coordinate</a> *&#160;</td>
<td class="paramname"><em>p</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="a1e2c6663ecb416870a0bfed3877e3e63"></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::LineLimiter::finishSection </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="a1140bce8e30bcf60ff85be6272ddecb7"></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::LineLimiter::isLastSegmentIntersecting </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">Coordinate</a> *&#160;</td>
<td class="paramname"><em>p</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="a35449c5c9ca2ab7484ee6d22f7691cf1"></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::LineLimiter::isSectionOpen </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="a87c9cfa1125b70a8aaea49638f00c757"></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_1CoordinateArraySequence.html">CoordinateArraySequence</a>&gt; &gt;&amp; geos::operation::overlayng::LineLimiter::limit </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1CoordinateSequence.html">CoordinateSequence</a> *&#160;</td>
<td class="paramname"><em>pts</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="aded00461b42c6ad02554c34d2cf4e278"></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::LineLimiter::startSection </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>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="a01da986f02ce2d1447bf9319e8ccb07c"></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_1Coordinate.html">Coordinate</a>* geos::operation::overlayng::LineLimiter::lastOutside</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="LineLimiter_8h_source.html#l00063">63</a> of file <a class="el" href="LineLimiter_8h_source.html">LineLimiter.h</a>.</p>
</div>
</div>
<a class="anchor" id="a39f49f654ec1898a6ed51c1707afedef"></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_1Envelope.html">Envelope</a>* geos::operation::overlayng::LineLimiter::limitEnv</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="LineLimiter_8h_source.html#l00061">61</a> of file <a class="el" href="LineLimiter_8h_source.html">LineLimiter.h</a>.</p>
</div>
</div>
<a class="anchor" id="abbf3a5ff6c9963661080193e5b0e4a8c"></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;std::vector&lt;<a class="el" href="classgeos_1_1geom_1_1Coordinate.html">Coordinate</a>&gt; &gt; geos::operation::overlayng::LineLimiter::ptList</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="LineLimiter_8h_source.html#l00062">62</a> of file <a class="el" href="LineLimiter_8h_source.html">LineLimiter.h</a>.</p>
</div>
</div>
<a class="anchor" id="a7acdb86e9c60c280bd74a78b83c08ed9"></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_1CoordinateArraySequence.html">CoordinateArraySequence</a>&gt; &gt; geos::operation::overlayng::LineLimiter::sections</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="LineLimiter_8h_source.html#l00064">64</a> of file <a class="el" href="LineLimiter_8h_source.html">LineLimiter.h</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="LineLimiter_8h_source.html">LineLimiter.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>