geos_390_docs/classgeos_1_1index_1_1kdtre...

703 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::index::kdtree::KdTree 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_1index.html">index</a></li><li class="navelem"><a class="el" href="namespacegeos_1_1index_1_1kdtree.html">kdtree</a></li><li class="navelem"><a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdTree.html">KdTree</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static 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_1index_1_1kdtree_1_1KdTree-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">geos::index::kdtree::KdTree Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="KdTree_8h_source.html">KdTree.h</a>&gt;</code></p>
<div class="dynheader">
Collaboration diagram for geos::index::kdtree::KdTree:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classgeos_1_1index_1_1kdtree_1_1KdTree__coll__graph.svg" width="286" height="255"><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="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdTree_1_1AccumulatingVisitor.html">AccumulatingVisitor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdTree_1_1BestMatchVisitor.html">BestMatchVisitor</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><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:a813c96abffdc67bf8453ae6e0910ef93"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdTree.html#a813c96abffdc67bf8453ae6e0910ef93">KdTree</a> ()</td></tr>
<tr class="separator:a813c96abffdc67bf8453ae6e0910ef93"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a561b234a719b39132d32b6c64a49d578"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdTree.html#a561b234a719b39132d32b6c64a49d578">KdTree</a> (double p_tolerance)</td></tr>
<tr class="separator:a561b234a719b39132d32b6c64a49d578"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a470a7525a3aad237b49ccc540d0dce0b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdTree.html#a470a7525a3aad237b49ccc540d0dce0b">isEmpty</a> ()</td></tr>
<tr class="separator:a470a7525a3aad237b49ccc540d0dce0b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2f788f3ee397edd7c35a36b5c81a3afc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdNode.html">KdNode</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdTree.html#a2f788f3ee397edd7c35a36b5c81a3afc">insert</a> (const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p)</td></tr>
<tr class="separator:a2f788f3ee397edd7c35a36b5c81a3afc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abdb994af2e256ad9c8981f402ac60946"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdNode.html">KdNode</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdTree.html#abdb994af2e256ad9c8981f402ac60946">insert</a> (const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p, void *data)</td></tr>
<tr class="separator:abdb994af2e256ad9c8981f402ac60946"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab3d4db63499e7a90ce4b17d9099a04cb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdTree.html#ab3d4db63499e7a90ce4b17d9099a04cb">query</a> (const <a class="el" href="classgeos_1_1geom_1_1Envelope.html">geom::Envelope</a> &amp;queryEnv, <a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdNodeVisitor.html">KdNodeVisitor</a> &amp;visitor)</td></tr>
<tr class="separator:ab3d4db63499e7a90ce4b17d9099a04cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad4f413af1ea46e02b7dd71e40ba18d9c"><td class="memItemLeft" align="right" valign="top">std::unique_ptr&lt; std::vector&lt; <a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdNode.html">KdNode</a> * &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdTree.html#ad4f413af1ea46e02b7dd71e40ba18d9c">query</a> (const <a class="el" href="classgeos_1_1geom_1_1Envelope.html">geom::Envelope</a> &amp;queryEnv)</td></tr>
<tr class="separator:ad4f413af1ea46e02b7dd71e40ba18d9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad2b2594777c4de975be3dd6f02007ab5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdTree.html#ad2b2594777c4de975be3dd6f02007ab5">query</a> (const <a class="el" href="classgeos_1_1geom_1_1Envelope.html">geom::Envelope</a> &amp;queryEnv, std::vector&lt; <a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdNode.html">KdNode</a> * &gt; &amp;result)</td></tr>
<tr class="separator:ad2b2594777c4de975be3dd6f02007ab5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2d12028482b91624818b9629426c4524"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdNode.html">KdNode</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdTree.html#a2d12028482b91624818b9629426c4524">query</a> (const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;queryPt)</td></tr>
<tr class="separator:a2d12028482b91624818b9629426c4524"><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:a5ccf694fcaf81c2d242b844e347842fe"><td class="memItemLeft" align="right" valign="top">static 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_1index_1_1kdtree_1_1KdTree.html#a5ccf694fcaf81c2d242b844e347842fe">toCoordinates</a> (std::vector&lt; <a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdNode.html">KdNode</a> * &gt; &amp;kdnodes)</td></tr>
<tr class="separator:a5ccf694fcaf81c2d242b844e347842fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6835385c009ecfc17c666142e921cf53"><td class="memItemLeft" align="right" valign="top">static 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_1index_1_1kdtree_1_1KdTree.html#a6835385c009ecfc17c666142e921cf53">toCoordinates</a> (std::vector&lt; <a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdNode.html">KdNode</a> * &gt; &amp;kdnodes, bool includeRepeated)</td></tr>
<tr class="separator:a6835385c009ecfc17c666142e921cf53"><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:a6c78914990d31759360dddf47f499ef2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdNode.html">KdNode</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdTree.html#a6c78914990d31759360dddf47f499ef2">findBestMatchNode</a> (const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p)</td></tr>
<tr class="separator:a6c78914990d31759360dddf47f499ef2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a767b9fa04abbfa87323885d08054c472"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdNode.html">KdNode</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdTree.html#a767b9fa04abbfa87323885d08054c472">insertExact</a> (const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p, void *data)</td></tr>
<tr class="separator:a767b9fa04abbfa87323885d08054c472"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a130e98f87c136624ab10265b35e32674"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdTree.html#a130e98f87c136624ab10265b35e32674">queryNode</a> (<a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdNode.html">KdNode</a> *currentNode, const <a class="el" href="classgeos_1_1geom_1_1Envelope.html">geom::Envelope</a> &amp;queryEnv, bool odd, <a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdNodeVisitor.html">KdNodeVisitor</a> &amp;visitor)</td></tr>
<tr class="separator:a130e98f87c136624ab10265b35e32674"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac632f8fc28b8f7779ce6bcd7355dd1ac"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdNode.html">KdNode</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdTree.html#ac632f8fc28b8f7779ce6bcd7355dd1ac">queryNodePoint</a> (<a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdNode.html">KdNode</a> *currentNode, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;queryPt, bool odd)</td></tr>
<tr class="separator:ac632f8fc28b8f7779ce6bcd7355dd1ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7d91ee15db408b5d866823a72116369b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdNode.html">KdNode</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdTree.html#a7d91ee15db408b5d866823a72116369b">createNode</a> (const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p, void *data)</td></tr>
<tr class="separator:a7d91ee15db408b5d866823a72116369b"><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:a27ffc5ac88de8971ef674fe6baea46ba"><td class="memItemLeft" align="right" valign="top">std::deque&lt; <a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdNode.html">KdNode</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdTree.html#a27ffc5ac88de8971ef674fe6baea46ba">nodeQue</a></td></tr>
<tr class="separator:a27ffc5ac88de8971ef674fe6baea46ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a74c3824891f96fff181cf9ee193107cc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdNode.html">KdNode</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdTree.html#a74c3824891f96fff181cf9ee193107cc">root</a></td></tr>
<tr class="separator:a74c3824891f96fff181cf9ee193107cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8f2ebb32e0a7f13b57a2dba5d261da95"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdTree.html#a8f2ebb32e0a7f13b57a2dba5d261da95">numberOfNodes</a></td></tr>
<tr class="separator:a8f2ebb32e0a7f13b57a2dba5d261da95"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f2dfb9927b2e47ee00d2d43275fbcc4"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdTree.html#a3f2dfb9927b2e47ee00d2d43275fbcc4">tolerance</a></td></tr>
<tr class="separator:a3f2dfb9927b2e47ee00d2d43275fbcc4"><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 implementation of a 2-D KD-Tree. KD-trees provide fast range searching on point data. </p>
<p>This implementation supports detecting and snapping points which are closer than a given distance tolerance. If the same point (up to tolerance) is inserted more than once, it is snapped to the existing node. In other words, if a point is inserted which lies within the tolerance of a node already in the index, it is snapped to that node. When a point is snapped to a node then a new node is not created but the count of the existing node is incremented. If more than one node in the tree is within tolerance of an inserted point, the closest and then lowest node is snapped to.</p>
<dl class="section author"><dt>Author</dt><dd>David Skea </dd>
<dd>
Martin Davis </dd></dl>
<p>Definition at line <a class="el" href="KdTree_8h_source.html#l00055">55</a> of file <a class="el" href="KdTree_8h_source.html">KdTree.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a813c96abffdc67bf8453ae6e0910ef93"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">geos::index::kdtree::KdTree::KdTree </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> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="KdTree_8h_source.html#l00142">142</a> of file <a class="el" href="KdTree_8h_source.html">KdTree.h</a>.</p>
</div>
</div>
<a class="anchor" id="a561b234a719b39132d32b6c64a49d578"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">geos::index::kdtree::KdTree::KdTree </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>p_tolerance</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="KdTree_8h_source.html#l00148">148</a> of file <a class="el" href="KdTree_8h_source.html">KdTree.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a7d91ee15db408b5d866823a72116369b"></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_1index_1_1kdtree_1_1KdNode.html">KdNode</a>* geos::index::kdtree::KdTree::createNode </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>p</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>data</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>Create a node on a locally managed deque to allow easy disposal and hopefully faster allocation as well. </p>
</div>
</div>
<a class="anchor" id="a6c78914990d31759360dddf47f499ef2"></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_1index_1_1kdtree_1_1KdNode.html">KdNode</a>* geos::index::kdtree::KdTree::findBestMatchNode </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>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="a2f788f3ee397edd7c35a36b5c81a3afc"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdNode.html">KdNode</a>* geos::index::kdtree::KdTree::insert </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>p</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Inserts a new point in the kd-tree. </p>
</div>
</div>
<a class="anchor" id="abdb994af2e256ad9c8981f402ac60946"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdNode.html">KdNode</a>* geos::index::kdtree::KdTree::insert </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>p</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>data</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a767b9fa04abbfa87323885d08054c472"></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_1index_1_1kdtree_1_1KdNode.html">KdNode</a>* geos::index::kdtree::KdTree::insertExact </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>p</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>data</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="a470a7525a3aad237b49ccc540d0dce0b"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool geos::index::kdtree::KdTree::isEmpty </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> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="KdTree_8h_source.html#l00154">154</a> of file <a class="el" href="KdTree_8h_source.html">KdTree.h</a>.</p>
</div>
</div>
<a class="anchor" id="ab3d4db63499e7a90ce4b17d9099a04cb"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void geos::index::kdtree::KdTree::query </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>queryEnv</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdNodeVisitor.html">KdNodeVisitor</a> &amp;&#160;</td>
<td class="paramname"><em>visitor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Performs a range search of the points in the index and visits all nodes found. </p>
</div>
</div>
<a class="anchor" id="ad4f413af1ea46e02b7dd71e40ba18d9c"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::unique_ptr&lt;std::vector&lt;<a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdNode.html">KdNode</a>*&gt; &gt; geos::index::kdtree::KdTree::query </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>queryEnv</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Performs a range search of the points in the index. </p>
</div>
</div>
<a class="anchor" id="ad2b2594777c4de975be3dd6f02007ab5"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void geos::index::kdtree::KdTree::query </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>queryEnv</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; <a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdNode.html">KdNode</a> * &gt; &amp;&#160;</td>
<td class="paramname"><em>result</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Performs a range search of the points in the index. </p>
</div>
</div>
<a class="anchor" id="a2d12028482b91624818b9629426c4524"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdNode.html">KdNode</a>* geos::index::kdtree::KdTree::query </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>queryPt</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Searches for a given point in the index and returns its node if found. </p>
</div>
</div>
<a class="anchor" id="a130e98f87c136624ab10265b35e32674"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void geos::index::kdtree::KdTree::queryNode </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdNode.html">KdNode</a> *&#160;</td>
<td class="paramname"><em>currentNode</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>queryEnv</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>odd</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdNodeVisitor.html">KdNodeVisitor</a> &amp;&#160;</td>
<td class="paramname"><em>visitor</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="ac632f8fc28b8f7779ce6bcd7355dd1ac"></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_1index_1_1kdtree_1_1KdNode.html">KdNode</a>* geos::index::kdtree::KdTree::queryNodePoint </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdNode.html">KdNode</a> *&#160;</td>
<td class="paramname"><em>currentNode</em>, </td>
</tr>
<tr>
<td class="paramkey"></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>queryPt</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>odd</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="a5ccf694fcaf81c2d242b844e347842fe"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static std::unique_ptr&lt;std::vector&lt;<a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a>&gt; &gt; geos::index::kdtree::KdTree::toCoordinates </td>
<td>(</td>
<td class="paramtype">std::vector&lt; <a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdNode.html">KdNode</a> * &gt; &amp;&#160;</td>
<td class="paramname"><em>kdnodes</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Converts a collection of <a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdNode.html">KdNode</a>s to an vector of <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a>s.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">kdnodes</td><td>a collection of nodes </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>an vector of the coordinates represented by the nodes </dd></dl>
</div>
</div>
<a class="anchor" id="a6835385c009ecfc17c666142e921cf53"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static std::unique_ptr&lt;std::vector&lt;<a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a>&gt; &gt; geos::index::kdtree::KdTree::toCoordinates </td>
<td>(</td>
<td class="paramtype">std::vector&lt; <a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdNode.html">KdNode</a> * &gt; &amp;&#160;</td>
<td class="paramname"><em>kdnodes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>includeRepeated</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">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Converts a collection of <a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdNode.html">KdNode</a>s to an vector of <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a>s, specifying whether repeated nodes should be represented by multiple coordinates.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">kdnodes</td><td>a collection of nodes </td></tr>
<tr><td class="paramname">includeRepeated</td><td>true if repeated nodes should be included multiple times </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>an vector of the coordinates represented by the nodes </dd></dl>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="a27ffc5ac88de8971ef674fe6baea46ba"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::deque&lt;<a class="el" href="classgeos_1_1index_1_1kdtree_1_1KdNode.html">KdNode</a>&gt; geos::index::kdtree::KdTree::nodeQue</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="KdTree_8h_source.html#l00059">59</a> of file <a class="el" href="KdTree_8h_source.html">KdTree.h</a>.</p>
</div>
</div>
<a class="anchor" id="a8f2ebb32e0a7f13b57a2dba5d261da95"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">size_t geos::index::kdtree::KdTree::numberOfNodes</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="KdTree_8h_source.html#l00061">61</a> of file <a class="el" href="KdTree_8h_source.html">KdTree.h</a>.</p>
</div>
</div>
<a class="anchor" id="a74c3824891f96fff181cf9ee193107cc"></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_1index_1_1kdtree_1_1KdNode.html">KdNode</a>* geos::index::kdtree::KdTree::root</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="KdTree_8h_source.html#l00060">60</a> of file <a class="el" href="KdTree_8h_source.html">KdTree.h</a>.</p>
</div>
</div>
<a class="anchor" id="a3f2dfb9927b2e47ee00d2d43275fbcc4"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">double geos::index::kdtree::KdTree::tolerance</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="KdTree_8h_source.html#l00062">62</a> of file <a class="el" href="KdTree_8h_source.html">KdTree.h</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="KdTree_8h_source.html">KdTree.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>