geos_390_docs/classgeos_1_1noding_1_1snap...

630 lines
35 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::noding::snapround::SnapRoundingNoder 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_1noding.html">noding</a></li><li class="navelem"><a class="el" href="namespacegeos_1_1noding_1_1snapround.html">snapround</a></li><li class="navelem"><a class="el" href="classgeos_1_1noding_1_1snapround_1_1SnapRoundingNoder.html">SnapRoundingNoder</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_1noding_1_1snapround_1_1SnapRoundingNoder-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">geos::noding::snapround::SnapRoundingNoder Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="SnapRoundingNoder_8h_source.html">SnapRoundingNoder.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for geos::noding::snapround::SnapRoundingNoder:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classgeos_1_1noding_1_1snapround_1_1SnapRoundingNoder__inherit__graph.svg" width="191" height="131"><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>
<div class="dynheader">
Collaboration diagram for geos::noding::snapround::SnapRoundingNoder:</div>
<div class="dyncontent">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="classgeos_1_1noding_1_1snapround_1_1SnapRoundingNoder__coll__graph.svg" width="100%" height="429"><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:a66a32128fa4817ab6b620902389ff0ab"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1noding_1_1snapround_1_1SnapRoundingNoder.html#a66a32128fa4817ab6b620902389ff0ab">SnapRoundingNoder</a> (const <a class="el" href="classgeos_1_1geom_1_1PrecisionModel.html">geom::PrecisionModel</a> *p_pm)</td></tr>
<tr class="separator:a66a32128fa4817ab6b620902389ff0ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a038c20c192b0691d34e688e4a251ca53"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classgeos_1_1noding_1_1SegmentString.html">SegmentString</a> * &gt; *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1noding_1_1snapround_1_1SnapRoundingNoder.html#a038c20c192b0691d34e688e4a251ca53">getNodedSubstrings</a> () const override</td></tr>
<tr class="separator:a038c20c192b0691d34e688e4a251ca53"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a875a2e57455ca5efc3b7b6cae617d03a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1noding_1_1snapround_1_1SnapRoundingNoder.html#a875a2e57455ca5efc3b7b6cae617d03a">computeNodes</a> (std::vector&lt; <a class="el" href="classgeos_1_1noding_1_1SegmentString.html">SegmentString</a> * &gt; *inputSegStrings) override</td></tr>
<tr class="separator:a875a2e57455ca5efc3b7b6cae617d03a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classgeos_1_1noding_1_1Noder"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classgeos_1_1noding_1_1Noder')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classgeos_1_1noding_1_1Noder.html">geos::noding::Noder</a></td></tr>
<tr class="memitem:a51af7a896051686b867d1e6aac6f8387 inherit pub_methods_classgeos_1_1noding_1_1Noder"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1noding_1_1Noder.html#a51af7a896051686b867d1e6aac6f8387">~Noder</a> ()</td></tr>
<tr class="separator:a51af7a896051686b867d1e6aac6f8387 inherit pub_methods_classgeos_1_1noding_1_1Noder"><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:aac9ce99db105a5f9c67ecfc094da4dc1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1noding_1_1snapround_1_1SnapRoundingNoder.html#aac9ce99db105a5f9c67ecfc094da4dc1">snapRound</a> (std::vector&lt; <a class="el" href="classgeos_1_1noding_1_1SegmentString.html">SegmentString</a> * &gt; &amp;inputSegStrings, std::vector&lt; <a class="el" href="classgeos_1_1noding_1_1SegmentString.html">SegmentString</a> * &gt; &amp;resultNodedSegments)</td></tr>
<tr class="separator:aac9ce99db105a5f9c67ecfc094da4dc1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1acc616ab50a84898b2f4c87f80ac994"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1noding_1_1snapround_1_1SnapRoundingNoder.html#a1acc616ab50a84898b2f4c87f80ac994">addVertexPixels</a> (std::vector&lt; <a class="el" href="classgeos_1_1noding_1_1SegmentString.html">SegmentString</a> * &gt; &amp;segStrings)</td></tr>
<tr class="separator:a1acc616ab50a84898b2f4c87f80ac994"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad612ff207dfa9f19565bb1f642618a37"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1noding_1_1snapround_1_1SnapRoundingNoder.html#ad612ff207dfa9f19565bb1f642618a37">addIntersectionPixels</a> (std::vector&lt; <a class="el" href="classgeos_1_1noding_1_1SegmentString.html">SegmentString</a> * &gt; &amp;segStrings)</td></tr>
<tr class="separator:ad612ff207dfa9f19565bb1f642618a37"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6c364d4e8c2195976c52b6189af3f00a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1noding_1_1snapround_1_1SnapRoundingNoder.html#a6c364d4e8c2195976c52b6189af3f00a">round</a> (const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;pt, <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;ptOut)</td></tr>
<tr class="separator:a6c364d4e8c2195976c52b6189af3f00a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2aca5805a724d17f969c6af9c4baf9c"><td class="memItemLeft" align="right" valign="top">std::unique_ptr&lt; std::vector&lt; <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1noding_1_1snapround_1_1SnapRoundingNoder.html#aa2aca5805a724d17f969c6af9c4baf9c">round</a> (const std::vector&lt; <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &gt; &amp;pts)</td></tr>
<tr class="separator:aa2aca5805a724d17f969c6af9c4baf9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a00fcb30166a44849f2934b3c96517ae8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1noding_1_1snapround_1_1SnapRoundingNoder.html#a00fcb30166a44849f2934b3c96517ae8">computeSnaps</a> (const std::vector&lt; <a class="el" href="classgeos_1_1noding_1_1SegmentString.html">SegmentString</a> * &gt; &amp;segStrings, std::vector&lt; <a class="el" href="classgeos_1_1noding_1_1SegmentString.html">SegmentString</a> * &gt; &amp;snapped)</td></tr>
<tr class="separator:a00fcb30166a44849f2934b3c96517ae8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4d06d64b5e446297fe75943f70c0e0b8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1noding_1_1NodedSegmentString.html">NodedSegmentString</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1noding_1_1snapround_1_1SnapRoundingNoder.html#a4d06d64b5e446297fe75943f70c0e0b8">computeSegmentSnaps</a> (<a class="el" href="classgeos_1_1noding_1_1NodedSegmentString.html">NodedSegmentString</a> *ss)</td></tr>
<tr class="separator:a4d06d64b5e446297fe75943f70c0e0b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a41c43aa020cdac26950939451617d8a9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1noding_1_1snapround_1_1SnapRoundingNoder.html#a41c43aa020cdac26950939451617d8a9">snapSegment</a> (<a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p0, <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p1, <a class="el" href="classgeos_1_1noding_1_1NodedSegmentString.html">NodedSegmentString</a> *ss, size_t segIndex)</td></tr>
<tr class="separator:a41c43aa020cdac26950939451617d8a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae426c4336afafd29e457a4e516ed1bdc"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1noding_1_1snapround_1_1SnapRoundingNoder.html#ae426c4336afafd29e457a4e516ed1bdc">addVertexNodeSnaps</a> (<a class="el" href="classgeos_1_1noding_1_1NodedSegmentString.html">NodedSegmentString</a> *ss)</td></tr>
<tr class="separator:ae426c4336afafd29e457a4e516ed1bdc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a16122e9c53f48f13f602b1f1f0b4368e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1noding_1_1snapround_1_1SnapRoundingNoder.html#a16122e9c53f48f13f602b1f1f0b4368e">snapVertexNode</a> (const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p0, <a class="el" href="classgeos_1_1noding_1_1NodedSegmentString.html">NodedSegmentString</a> *ss, size_t segIndex)</td></tr>
<tr class="separator:a16122e9c53f48f13f602b1f1f0b4368e"><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:a98bfe623d0c5198c584a14de494a3522"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classgeos_1_1geom_1_1PrecisionModel.html">geom::PrecisionModel</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1noding_1_1snapround_1_1SnapRoundingNoder.html#a98bfe623d0c5198c584a14de494a3522">pm</a></td></tr>
<tr class="separator:a98bfe623d0c5198c584a14de494a3522"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b50bc68b1e511d5f65b3bc2bdfb6a1e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1noding_1_1snapround_1_1HotPixelIndex.html">noding::snapround::HotPixelIndex</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1noding_1_1snapround_1_1SnapRoundingNoder.html#a1b50bc68b1e511d5f65b3bc2bdfb6a1e">pixelIndex</a></td></tr>
<tr class="separator:a1b50bc68b1e511d5f65b3bc2bdfb6a1e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa9bcad1f503998d1b580761152a76aae"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classgeos_1_1noding_1_1SegmentString.html">SegmentString</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1noding_1_1snapround_1_1SnapRoundingNoder.html#aa9bcad1f503998d1b580761152a76aae">snappedResult</a></td></tr>
<tr class="separator:aa9bcad1f503998d1b580761152a76aae"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pro_methods_classgeos_1_1noding_1_1Noder"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classgeos_1_1noding_1_1Noder')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="classgeos_1_1noding_1_1Noder.html">geos::noding::Noder</a></td></tr>
<tr class="memitem:a44ae3fde11fa58e6f3637ebd67f6571e inherit pro_methods_classgeos_1_1noding_1_1Noder"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1noding_1_1Noder.html#a44ae3fde11fa58e6f3637ebd67f6571e">Noder</a> ()</td></tr>
<tr class="separator:a44ae3fde11fa58e6f3637ebd67f6571e inherit pro_methods_classgeos_1_1noding_1_1Noder"><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>Uses Snap Rounding to compute a rounded, fully noded arrangement from a set of <a class="el" href="classgeos_1_1noding_1_1SegmentString.html">noding::SegmentString</a>s, in a performant way, and avoiding unnecessary noding.</p>
<p>Implements the Snap Rounding technique described in the papers by Hobby, Guibas &amp; Marimont, and Goodrich et al. Snap Rounding enforces that all output vertices lie on a uniform grid, which is determined by the provided <a class="el" href="classgeos_1_1geom_1_1PrecisionModel.html">geom::PrecisionModel</a>.</p>
<p>Input vertices do not have to be rounded to the grid beforehand; this is done during the snap-rounding process. In fact, rounding cannot be done a priori, since rounding vertices by themselves can distort the rounded topology of the arrangement (i.e. by moving segments away from hot pixels that would otherwise intersect them, or by moving vertices across segments).</p>
<p>To minimize the number of introduced nodes, the Snap-Rounding <a class="el" href="classgeos_1_1noding_1_1Noder.html" title="Computes all intersections between segments in a set of SegmentString. ">Noder</a> avoids creating nodes at edge vertices if there is no intersection or snap at that location. However, if two different input edges contain identical segments, each of the segment vertices will be noded. This still provides fully-noded output. This is the same behaviour provided by other noders, such as <a class="el" href="classgeos_1_1noding_1_1MCIndexNoder.html">noding::MCIndexNoder</a> and <a class="el" href="classgeos_1_1noding_1_1snap_1_1SnappingNoder.html">noding::snap::SnappingNoder</a>. </p>
<p>Definition at line <a class="el" href="SnapRoundingNoder_8h_source.html#l00071">71</a> of file <a class="el" href="SnapRoundingNoder_8h_source.html">SnapRoundingNoder.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a66a32128fa4817ab6b620902389ff0ab"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">geos::noding::snapround::SnapRoundingNoder::SnapRoundingNoder </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1PrecisionModel.html">geom::PrecisionModel</a> *&#160;</td>
<td class="paramname"><em>p_pm</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="SnapRoundingNoder_8h_source.html#l00140">140</a> of file <a class="el" href="SnapRoundingNoder_8h_source.html">SnapRoundingNoder.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="ad612ff207dfa9f19565bb1f642618a37"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void geos::noding::snapround::SnapRoundingNoder::addIntersectionPixels </td>
<td>(</td>
<td class="paramtype">std::vector&lt; <a class="el" href="classgeos_1_1noding_1_1SegmentString.html">SegmentString</a> * &gt; &amp;&#160;</td>
<td class="paramname"><em>segStrings</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>Detects interior intersections in the collection of <a class="el" href="classgeos_1_1noding_1_1SegmentString.html">SegmentString</a>s, and adds nodes for them to the segment strings. Also creates <a class="el" href="classgeos_1_1noding_1_1snapround_1_1HotPixel.html" title="Implements a &quot;hot pixel&quot; as used in the Snap Rounding algorithm. ">HotPixel</a> nodes for the intersection points. </p>
</div>
</div>
<a class="anchor" id="ae426c4336afafd29e457a4e516ed1bdc"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void geos::noding::snapround::SnapRoundingNoder::addVertexNodeSnaps </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classgeos_1_1noding_1_1NodedSegmentString.html">NodedSegmentString</a> *&#160;</td>
<td class="paramname"><em>ss</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>Add nodes for any vertices in hot pixels that were added as nodes during segment noding. </p>
</div>
</div>
<a class="anchor" id="a1acc616ab50a84898b2f4c87f80ac994"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void geos::noding::snapround::SnapRoundingNoder::addVertexPixels </td>
<td>(</td>
<td class="paramtype">std::vector&lt; <a class="el" href="classgeos_1_1noding_1_1SegmentString.html">SegmentString</a> * &gt; &amp;&#160;</td>
<td class="paramname"><em>segStrings</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>Creates HotPixels for each vertex in the input segStrings. The HotPixels are not marked as nodes, since they will only be nodes in the final line arrangement if they interact with other segments (or they are already created as intersection nodes). </p>
</div>
</div>
<a class="anchor" id="a875a2e57455ca5efc3b7b6cae617d03a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void geos::noding::snapround::SnapRoundingNoder::computeNodes </td>
<td>(</td>
<td class="paramtype">std::vector&lt; <a class="el" href="classgeos_1_1noding_1_1SegmentString.html">SegmentString</a> * &gt; *&#160;</td>
<td class="paramname"><em>inputSegStrings</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Computes the nodes in the snap-rounding line arrangement. The nodes are added to the <a class="el" href="classgeos_1_1noding_1_1NodedSegmentString.html">NodedSegmentString</a>s provided as the input. </p>
<p>Implements <a class="el" href="classgeos_1_1noding_1_1Noder.html#a42da20658cf8a969a1cbb15fd2de725d">geos::noding::Noder</a>.</p>
</div>
</div>
<a class="anchor" id="a4d06d64b5e446297fe75943f70c0e0b8"></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_1noding_1_1NodedSegmentString.html">NodedSegmentString</a>* geos::noding::snapround::SnapRoundingNoder::computeSegmentSnaps </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classgeos_1_1noding_1_1NodedSegmentString.html">NodedSegmentString</a> *&#160;</td>
<td class="paramname"><em>ss</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="a00fcb30166a44849f2934b3c96517ae8"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void geos::noding::snapround::SnapRoundingNoder::computeSnaps </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classgeos_1_1noding_1_1SegmentString.html">SegmentString</a> * &gt; &amp;&#160;</td>
<td class="paramname"><em>segStrings</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; <a class="el" href="classgeos_1_1noding_1_1SegmentString.html">SegmentString</a> * &gt; &amp;&#160;</td>
<td class="paramname"><em>snapped</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>Computes new segment strings which are rounded and contain intersections added as a result of snapping segments to snap points (hot pixels).</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">segStrings</td><td>segments to snap </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the snapped segment strings </dd></dl>
</div>
</div>
<a class="anchor" id="a038c20c192b0691d34e688e4a251ca53"></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_1noding_1_1SegmentString.html">SegmentString</a>*&gt;* geos::noding::snapround::SnapRoundingNoder::getNodedSubstrings </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>a Collection of NodedSegmentStrings representing the substrings </dd></dl>
<p>Implements <a class="el" href="classgeos_1_1noding_1_1Noder.html#a47dfe5a95741c2c9809d94f8ba39fa89">geos::noding::Noder</a>.</p>
</div>
</div>
<a class="anchor" id="a6c364d4e8c2195976c52b6189af3f00a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void geos::noding::snapround::SnapRoundingNoder::round </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;&#160;</td>
<td class="paramname"><em>pt</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;&#160;</td>
<td class="paramname"><em>ptOut</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="aa2aca5805a724d17f969c6af9c4baf9c"></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">geom::Coordinate</a>&gt; &gt; geos::noding::snapround::SnapRoundingNoder::round </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>pts</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>Gets a list of the rounded coordinates. Duplicate (collapsed) coordinates are removed.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pts</td><td>the coordinates to round </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>array of rounded coordinates </dd></dl>
</div>
</div>
<a class="anchor" id="aac9ce99db105a5f9c67ecfc094da4dc1"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void geos::noding::snapround::SnapRoundingNoder::snapRound </td>
<td>(</td>
<td class="paramtype">std::vector&lt; <a class="el" href="classgeos_1_1noding_1_1SegmentString.html">SegmentString</a> * &gt; &amp;&#160;</td>
<td class="paramname"><em>inputSegStrings</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; <a class="el" href="classgeos_1_1noding_1_1SegmentString.html">SegmentString</a> * &gt; &amp;&#160;</td>
<td class="paramname"><em>resultNodedSegments</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="a41c43aa020cdac26950939451617d8a9"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void geos::noding::snapround::SnapRoundingNoder::snapSegment </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;&#160;</td>
<td class="paramname"><em>p0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;&#160;</td>
<td class="paramname"><em>p1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classgeos_1_1noding_1_1NodedSegmentString.html">NodedSegmentString</a> *&#160;</td>
<td class="paramname"><em>ss</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>segIndex</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>Snaps a segment in a segmentString to HotPixels that it intersects.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">p0</td><td>the segment start coordinate </td></tr>
<tr><td class="paramname">p1</td><td>the segment end coordinate </td></tr>
<tr><td class="paramname">ss</td><td>the segment string to add intersections to </td></tr>
<tr><td class="paramname">segIndex</td><td>the index of the segment </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="a16122e9c53f48f13f602b1f1f0b4368e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void geos::noding::snapround::SnapRoundingNoder::snapVertexNode </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;&#160;</td>
<td class="paramname"><em>p0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classgeos_1_1noding_1_1NodedSegmentString.html">NodedSegmentString</a> *&#160;</td>
<td class="paramname"><em>ss</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>segIndex</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="a1b50bc68b1e511d5f65b3bc2bdfb6a1e"></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_1noding_1_1snapround_1_1HotPixelIndex.html">noding::snapround::HotPixelIndex</a> geos::noding::snapround::SnapRoundingNoder::pixelIndex</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="SnapRoundingNoder_8h_source.html#l00077">77</a> of file <a class="el" href="SnapRoundingNoder_8h_source.html">SnapRoundingNoder.h</a>.</p>
</div>
</div>
<a class="anchor" id="a98bfe623d0c5198c584a14de494a3522"></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_1PrecisionModel.html">geom::PrecisionModel</a>* geos::noding::snapround::SnapRoundingNoder::pm</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="SnapRoundingNoder_8h_source.html#l00076">76</a> of file <a class="el" href="SnapRoundingNoder_8h_source.html">SnapRoundingNoder.h</a>.</p>
</div>
</div>
<a class="anchor" id="aa9bcad1f503998d1b580761152a76aae"></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_1noding_1_1SegmentString.html">SegmentString</a>*&gt; geos::noding::snapround::SnapRoundingNoder::snappedResult</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="SnapRoundingNoder_8h_source.html#l00078">78</a> of file <a class="el" href="SnapRoundingNoder_8h_source.html">SnapRoundingNoder.h</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="SnapRoundingNoder_8h_source.html">SnapRoundingNoder.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>