public class KdTree extends Object
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.
| Constructor and Description |
|---|
KdTree()
Creates a new instance of a KdTree with a snapping tolerance of 0.0.
|
KdTree(double tolerance)
Creates a new instance of a KdTree, specifying a snapping distance
tolerance.
|
| Modifier and Type | Method and Description |
|---|---|
KdNode |
insert(Coordinate p)
Inserts a new point in the kd-tree, with no data.
|
KdNode |
insert(Coordinate p,
Object data)
Inserts a new point into the kd-tree.
|
boolean |
isEmpty()
Tests whether the index contains any items.
|
List |
query(Envelope queryEnv)
Performs a range search of the points in the index.
|
void |
query(Envelope queryEnv,
KdNodeVisitor visitor)
Performs a range search of the points in the index and visits all nodes found.
|
void |
query(Envelope queryEnv,
List result)
Performs a range search of the points in the index.
|
static Coordinate[] |
toCoordinates(Collection kdnodes)
Converts a collection of
KdNodes to an array of Coordinates. |
static Coordinate[] |
toCoordinates(Collection kdnodes,
boolean includeRepeated)
Converts a collection of
KdNodes
to an array of Coordinates,
specifying whether repeated nodes should be represented
by multiple coordinates. |
public KdTree()
public KdTree(double tolerance)
tolerance - the tolerance distance for considering two points equalpublic static Coordinate[] toCoordinates(Collection kdnodes)
KdNodes to an array of Coordinates.kdnodes - a collection of nodespublic static Coordinate[] toCoordinates(Collection kdnodes, boolean includeRepeated)
KdNodes
to an array of Coordinates,
specifying whether repeated nodes should be represented
by multiple coordinates.kdnodes - a collection of nodesincludeRepeated - true if repeated nodes should
be included multiple timespublic boolean isEmpty()
public KdNode insert(Coordinate p)
p - the point to insertpublic KdNode insert(Coordinate p, Object data)
p - the point to insertdata - a data item for the pointpublic void query(Envelope queryEnv, KdNodeVisitor visitor)
queryEnv - the range rectangle to queryvisitor - a visitor to visit all nodes found by the searchpublic List query(Envelope queryEnv)
queryEnv - the range rectangle to queryCopyright © 2020. All rights reserved.