17#include <geos/export.h>
18#include <geos/geom/Envelope.h>
19#include <geos/index/kdtree/KdNodeVisitor.h>
20#include <geos/index/kdtree/KdNode.h>
27#pragma warning(disable: 4251)
57 std::deque<KdNode> nodeQue;
59 std::size_t numberOfNodes;
65 static void queryNode(
KdNode* currentNode,
const geom::Envelope& queryEnv,
bool odd, KdNodeVisitor& visitor);
79 class BestMatchVisitor :
public KdNodeVisitor {
84 void visit(
KdNode* node)
override;
87 BestMatchVisitor(
const BestMatchVisitor& other) =
delete;
88 BestMatchVisitor& operator=(
const BestMatchVisitor& rhs) =
delete;
102 class AccumulatingVisitor :
public KdNodeVisitor {
104 explicit AccumulatingVisitor(std::vector<KdNode*>& p_nodeList) :
105 nodeList(p_nodeList) {};
106 void visit(
KdNode* node)
override { nodeList.push_back(node); }
109 AccumulatingVisitor(
const AccumulatingVisitor& other) =
delete;
110 AccumulatingVisitor& operator=(
const AccumulatingVisitor& rhs) =
delete;
114 std::vector<KdNode*>& nodeList;
127 static std::vector<geom::Coordinate>
toCoordinates(
const std::vector<KdNode*>& kdNodes);
140 static std::vector<geom::Coordinate>
toCoordinates(
const std::vector<KdNode*>& kdNodes,
bool includeRepeated);
148 explicit KdTree(
double p_tolerance) :
151 tolerance(p_tolerance)
154 bool isEmpty() {
return root ==
nullptr; }
Coordinate is the lightweight class used to store coordinates.
Definition: Coordinate.h:220
An Envelope defines a rectangulare region of the 2D coordinate plane.
Definition: Envelope.h:59
KdNode * query(const geom::Coordinate &queryPt)
static std::vector< geom::Coordinate > toCoordinates(const std::vector< KdNode * > &kdNodes)
KdNode * insert(const geom::Coordinate &p)
void query(const geom::Envelope &queryEnv, KdNodeVisitor &visitor)
std::vector< KdNode * > query(const geom::Envelope &queryEnv)
void query(const geom::Envelope &queryEnv, std::vector< KdNode * > &result)
static std::vector< geom::Coordinate > toCoordinates(const std::vector< KdNode * > &kdNodes, bool includeRepeated)
Basic namespace for all GEOS functionalities.
Definition: geos.h:38