19 #ifndef GEOS_IDX_QUADTREE_NODE_H
20 #define GEOS_IDX_QUADTREE_NODE_H
22 #include <geos/export.h>
23 #include <geos/index/quadtree/NodeBase.h>
24 #include <geos/geom/Coordinate.h>
25 #include <geos/geom/Envelope.h>
32 #pragma warning(disable: 4251) // warning C4251: needs to have dll-interface to be used by clients of class
60 std::unique_ptr<geom::Envelope> env;
72 Node* getSubnode(
int index);
74 std::unique_ptr<Node> createSubnode(
int index);
78 bool isSearchMatch(
const geom::Envelope& searchEnv)
const override {
79 return env->intersects(searchEnv);
85 static std::unique_ptr<Node> createNode(
const geom::Envelope& env);
95 Node(std::unique_ptr<geom::Envelope> nenv,
int nlevel)
98 centre((env->getMinX()+env->getMaxX())/2,
99 (env->getMinY()+env->getMaxY())/2),
123 void insertNode(std::unique_ptr<Node> node);
125 std::string toString()
const override;
137 #endif // GEOS_IDX_QUADTREE_NODE_H
Basic namespace for all GEOS functionalities.
Definition: IndexedNestedRingTester.h:25
The base class for nodes in a Quadtree.
Definition: quadtree/NodeBase.h:54
NodeBase * find(const geom::Envelope *searchEnv)
Returns the smallest existing node containing the envelope.
static std::unique_ptr< Node > createExpanded(std::unique_ptr< Node > node, const geom::Envelope &addEnv)
Create a node containing the given node and envelope.
Coordinate is the lightweight class used to store coordinates.
Definition: Coordinate.h:60
Node * getNode(const geom::Envelope *searchEnv)
Returns the subquad containing the envelope. Creates the subquad if it does not already exist.
Represents a node of a Quadtree.
Definition: index/quadtree/Node.h:55
An Envelope defines a rectangulare region of the 2D coordinate plane.
Definition: Envelope.h:59
geom::Envelope * getEnvelope()
Definition: index/quadtree/Node.h:108