geos_390_docs/classgeos_1_1algorithm_1_1B...

308 lines
19 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::algorithm::BoundaryNodeRule 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_1algorithm.html">algorithm</a></li><li class="navelem"><a class="el" href="classgeos_1_1algorithm_1_1BoundaryNodeRule.html">BoundaryNodeRule</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="classgeos_1_1algorithm_1_1BoundaryNodeRule-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">geos::algorithm::BoundaryNodeRule Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div> </div>
</div><!--header-->
<div class="contents">
<p>An interface for rules which determine whether node points which are in boundaries of lineal geometry components are in the boundary of the parent geometry collection.
<a href="classgeos_1_1algorithm_1_1BoundaryNodeRule.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="BoundaryNodeRule_8h_source.html">BoundaryNodeRule.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:aa604218f6539b740c179021283dce304"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1BoundaryNodeRule.html#aa604218f6539b740c179021283dce304">~BoundaryNodeRule</a> ()</td></tr>
<tr class="separator:aa604218f6539b740c179021283dce304"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a52f63215c796176e1f0e304dff43ccc3"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1BoundaryNodeRule.html#a52f63215c796176e1f0e304dff43ccc3">isInBoundary</a> (int boundaryCount) const =0</td></tr>
<tr class="memdesc:a52f63215c796176e1f0e304dff43ccc3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Tests whether a point that lies in <code>boundaryCount</code> geometry component boundaries is considered to form part of the boundary of the parent geometry. <a href="#a52f63215c796176e1f0e304dff43ccc3">More...</a><br /></td></tr>
<tr class="separator:a52f63215c796176e1f0e304dff43ccc3"><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:a15ef8a9e2829da0ed1d58d9d5a6113f7"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classgeos_1_1algorithm_1_1BoundaryNodeRule.html">BoundaryNodeRule</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1BoundaryNodeRule.html#a15ef8a9e2829da0ed1d58d9d5a6113f7">getBoundaryRuleMod2</a> ()</td></tr>
<tr class="memdesc:a15ef8a9e2829da0ed1d58d9d5a6113f7"><td class="mdescLeft">&#160;</td><td class="mdescRight">The Mod-2 Boundary Node Rule (which is the rule specified in the OGC SFS). <a href="#a15ef8a9e2829da0ed1d58d9d5a6113f7">More...</a><br /></td></tr>
<tr class="separator:a15ef8a9e2829da0ed1d58d9d5a6113f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6c2d4bb0c0881e0579c2b3cd84210d1b"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classgeos_1_1algorithm_1_1BoundaryNodeRule.html">BoundaryNodeRule</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1BoundaryNodeRule.html#a6c2d4bb0c0881e0579c2b3cd84210d1b">getBoundaryEndPoint</a> ()</td></tr>
<tr class="memdesc:a6c2d4bb0c0881e0579c2b3cd84210d1b"><td class="mdescLeft">&#160;</td><td class="mdescRight">The Endpoint Boundary Node Rule. <a href="#a6c2d4bb0c0881e0579c2b3cd84210d1b">More...</a><br /></td></tr>
<tr class="separator:a6c2d4bb0c0881e0579c2b3cd84210d1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a290f6c288310b7cfd8d88b164d673aae"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classgeos_1_1algorithm_1_1BoundaryNodeRule.html">BoundaryNodeRule</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1BoundaryNodeRule.html#a290f6c288310b7cfd8d88b164d673aae">getBoundaryMultivalentEndPoint</a> ()</td></tr>
<tr class="memdesc:a290f6c288310b7cfd8d88b164d673aae"><td class="mdescLeft">&#160;</td><td class="mdescRight">The MultiValent Endpoint Boundary Node Rule. <a href="#a290f6c288310b7cfd8d88b164d673aae">More...</a><br /></td></tr>
<tr class="separator:a290f6c288310b7cfd8d88b164d673aae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ff27a0a7e23b68ed79beb82627a7c30"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classgeos_1_1algorithm_1_1BoundaryNodeRule.html">BoundaryNodeRule</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1BoundaryNodeRule.html#a4ff27a0a7e23b68ed79beb82627a7c30">getBoundaryMonovalentEndPoint</a> ()</td></tr>
<tr class="memdesc:a4ff27a0a7e23b68ed79beb82627a7c30"><td class="mdescLeft">&#160;</td><td class="mdescRight">The Monovalent Endpoint Boundary Node Rule. <a href="#a4ff27a0a7e23b68ed79beb82627a7c30">More...</a><br /></td></tr>
<tr class="separator:a4ff27a0a7e23b68ed79beb82627a7c30"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad20a607eb079643f77caa17cf9b5053f"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classgeos_1_1algorithm_1_1BoundaryNodeRule.html">BoundaryNodeRule</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1BoundaryNodeRule.html#ad20a607eb079643f77caa17cf9b5053f">getBoundaryOGCSFS</a> ()</td></tr>
<tr class="memdesc:ad20a607eb079643f77caa17cf9b5053f"><td class="mdescLeft">&#160;</td><td class="mdescRight">The Boundary Node Rule specified by the OGC Simple Features Specification, which is the same as the Mod-2 rule. <a href="#ad20a607eb079643f77caa17cf9b5053f">More...</a><br /></td></tr>
<tr class="separator:ad20a607eb079643f77caa17cf9b5053f"><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>An interface for rules which determine whether node points which are in boundaries of lineal geometry components are in the boundary of the parent geometry collection. </p>
<p>The SFS specifies a single kind of boundary node rule, the <code>Mod2BoundaryNodeRule</code> rule. However, other kinds of Boundary Node Rules are appropriate in specific situations (for instance, linear network topology usually follows the <code>EndPointBoundaryNodeRule</code>.) Some JTS operations allow the <a class="el" href="classgeos_1_1algorithm_1_1BoundaryNodeRule.html" title="An interface for rules which determine whether node points which are in boundaries of lineal geometry...">BoundaryNodeRule</a> to be specified, and respect this rule when computing the results of the operation.</p>
<dl class="section author"><dt>Author</dt><dd>Martin Davis </dd></dl>
<dl class="section version"><dt>Version</dt><dd>1.7</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classgeos_1_1operation_1_1relate_1_1RelateOp.html" title="Implements the SFS relate() operation on two geom::Geometry objects. ">operation::relate::RelateOp</a> </dd>
<dd>
<a class="el" href="classgeos_1_1operation_1_1IsSimpleOp.html" title="Tests whether a Geometry is simple. ">operation::IsSimpleOp</a> </dd>
<dd>
<a class="el" href="classgeos_1_1algorithm_1_1PointLocator.html" title="Computes the topological relationship (Location) of a single point to a Geometry. ...">algorithm::PointLocator</a> </dd></dl>
<p>Definition at line <a class="el" href="BoundaryNodeRule_8h_source.html#l00051">51</a> of file <a class="el" href="BoundaryNodeRule_8h_source.html">BoundaryNodeRule.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="aa604218f6539b740c179021283dce304"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual geos::algorithm::BoundaryNodeRule::~BoundaryNodeRule </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="BoundaryNodeRule_8h_source.html#l00057">57</a> of file <a class="el" href="BoundaryNodeRule_8h_source.html">BoundaryNodeRule.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a6c2d4bb0c0881e0579c2b3cd84210d1b"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static const <a class="el" href="classgeos_1_1algorithm_1_1BoundaryNodeRule.html">BoundaryNodeRule</a>&amp; geos::algorithm::BoundaryNodeRule::getBoundaryEndPoint </td>
<td>(</td>
<td class="paramname"></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">
<p>The Endpoint Boundary Node Rule. </p>
<p>A <a class="el" href="classgeos_1_1algorithm_1_1BoundaryNodeRule.html" title="An interface for rules which determine whether node points which are in boundaries of lineal geometry...">BoundaryNodeRule</a> which specifies that any points which are endpoints of lineal components are in the boundary of the parent geometry. This corresponds to the "intuitive" topological definition of boundary. Under this rule LinearRings have a non-empty boundary (the common endpoint of the underlying LineString).</p>
<p>This rule is useful when dealing with linear networks. For example, it can be used to check whether linear networks are correctly noded. The usual network topology constraint is that linear segments may touch only at endpoints. In the case of a segment touching a closed segment (ring) at one point, the Mod2 rule cannot distinguish between the permitted case of touching at the node point and the invalid case of touching at some other interior (non-node) point. The EndPoint rule does distinguish between these cases, so is more appropriate for use. </p>
</div>
</div>
<a class="anchor" id="a4ff27a0a7e23b68ed79beb82627a7c30"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static const <a class="el" href="classgeos_1_1algorithm_1_1BoundaryNodeRule.html">BoundaryNodeRule</a>&amp; geos::algorithm::BoundaryNodeRule::getBoundaryMonovalentEndPoint </td>
<td>(</td>
<td class="paramname"></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">
<p>The Monovalent Endpoint Boundary Node Rule. </p>
<p>A <a class="el" href="classgeos_1_1algorithm_1_1BoundaryNodeRule.html" title="An interface for rules which determine whether node points which are in boundaries of lineal geometry...">BoundaryNodeRule</a> which determines that only endpoints with valency of exactly 1 are on the boundary. This corresponds to the boundary of a MultiLineString being all the "unattached" endpoints. </p>
</div>
</div>
<a class="anchor" id="a290f6c288310b7cfd8d88b164d673aae"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static const <a class="el" href="classgeos_1_1algorithm_1_1BoundaryNodeRule.html">BoundaryNodeRule</a>&amp; geos::algorithm::BoundaryNodeRule::getBoundaryMultivalentEndPoint </td>
<td>(</td>
<td class="paramname"></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">
<p>The MultiValent Endpoint Boundary Node Rule. </p>
<p>A <a class="el" href="classgeos_1_1algorithm_1_1BoundaryNodeRule.html" title="An interface for rules which determine whether node points which are in boundaries of lineal geometry...">BoundaryNodeRule</a> which determines that only endpoints with valency greater than 1 are on the boundary. This corresponds to the boundary of a MultiLineString being all the "attached" endpoints, but not the "unattached" ones. </p>
</div>
</div>
<a class="anchor" id="ad20a607eb079643f77caa17cf9b5053f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static const <a class="el" href="classgeos_1_1algorithm_1_1BoundaryNodeRule.html">BoundaryNodeRule</a>&amp; geos::algorithm::BoundaryNodeRule::getBoundaryOGCSFS </td>
<td>(</td>
<td class="paramname"></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">
<p>The Boundary Node Rule specified by the OGC Simple Features Specification, which is the same as the Mod-2 rule. </p>
<p>A <a class="el" href="classgeos_1_1algorithm_1_1BoundaryNodeRule.html" title="An interface for rules which determine whether node points which are in boundaries of lineal geometry...">BoundaryNodeRule</a> which determines that only endpoints with valency greater than 1 are on the boundary. This corresponds to the boundary of a MultiLineString being all the "attached" endpoints, but not the "unattached" ones. </p>
</div>
</div>
<a class="anchor" id="a15ef8a9e2829da0ed1d58d9d5a6113f7"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static const <a class="el" href="classgeos_1_1algorithm_1_1BoundaryNodeRule.html">BoundaryNodeRule</a>&amp; geos::algorithm::BoundaryNodeRule::getBoundaryRuleMod2 </td>
<td>(</td>
<td class="paramname"></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">
<p>The Mod-2 Boundary Node Rule (which is the rule specified in the OGC SFS). </p>
<p>A <a class="el" href="classgeos_1_1algorithm_1_1BoundaryNodeRule.html" title="An interface for rules which determine whether node points which are in boundaries of lineal geometry...">BoundaryNodeRule</a> specifies that points are in the boundary of a lineal geometry iff the point lies on the boundary of an odd number of components. Under this rule LinearRings and closed LineStrings have an empty boundary.</p>
<p>This is the rule specified by the OGC SFS, and is the default rule used in JTS. </p>
</div>
</div>
<a class="anchor" id="a52f63215c796176e1f0e304dff43ccc3"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool geos::algorithm::BoundaryNodeRule::isInBoundary </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>boundaryCount</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Tests whether a point that lies in <code>boundaryCount</code> geometry component boundaries is considered to form part of the boundary of the parent geometry. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">boundaryCount</td><td>the number of component boundaries that this point occurs in </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> if points in this number of boundaries lie in the parent boundary </dd></dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="BoundaryNodeRule_8h_source.html">BoundaryNodeRule.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>