A query-only R-tree created using the Sort-Tile-Recursive (STR) algorithm. For two-dimensional spatial data. The STR packed R-tree is simple to implement and maximizes space utilization; that is, as many leaves as possible are filled to capacity. Overlap between nodes is far less than in a basic R-tree. However, once the tree has been built (explicitly or on the first call to #query), items may not be added or removed. Described in: P. Rigaux, Michel Scholl and Agnes Voisard. Spatial Databases With Application To GIS. Morgan Kaufmann, San Francisco, 2002.
More...
|
| STRtree () |
| Constructs an STRtree with the default (10) node capacity. More...
|
|
| STRtree (int nodeCapacity) |
| Constructs an STRtree with the given maximum number of child nodes that a node may have. More...
|
|
new void | Insert (Envelope itemEnv, TItem item) |
| Inserts an item having the given bounds into the tree. More...
|
|
new IList< TItem > | Query (Envelope searchEnv) |
| Returns items whose bounds intersect the given envelope. More...
|
|
new void | Query (Envelope searchEnv, IItemVisitor< TItem > visitor) |
| Returns items whose bounds intersect the given envelope. More...
|
|
new bool | Remove (Envelope itemEnv, TItem item) |
| Removes a single item from the tree. More...
|
|
TItem[] | NearestNeighbour (IItemDistance< Envelope, TItem > itemDist) |
| Finds the two nearest items in the tree, using IItemDistance{Envelope, TItem} as the distance metric. A Branch-and-Bound tree traversal algorithm is used to provide an efficient search. More...
|
|
TItem | NearestNeighbour (Envelope env, TItem item, IItemDistance< Envelope, TItem > itemDist) |
| Finds the item in this tree which is nearest to the given item , using IItemDistance{Envelope,TItem} as the distance metric. A Branch-and-Bound tree traversal algorithm is used to provide an efficient search. The query item does not have to be contained in the tree, but it does have to be compatible with the itemDist distance metric. More...
|
|
TItem[] | NearestNeighbour (STRtree< TItem > tree, IItemDistance< Envelope, TItem > itemDist) |
| Finds the two nearest items from this tree and another tree, using IItemDistance{Envelope, TItem} as the distance metric. A Branch-and-Bound tree traversal algorithm is used to provide an efficient search. The result value is a pair of items, the first from this tree and the second from the argument tree. More...
|
|
void | Build () |
| Creates parent nodes, grandparent nodes, and so forth up to the root node, for the data that has been inserted into the tree. Can only be called once, and thus can be called only after all of the data has been inserted into the tree. More...
|
|
IList | ItemsTree () |
| Gets a tree structure (as a nested list) corresponding to the structure of the items and nodes in this tree. The returned Lists contain either Object items, or Lists which correspond to subtrees of the tree Subtrees which do not contain any items are not included. Builds the tree if necessary. More...
|
|
void | Insert (Envelope itemEnv, T item) |
| Adds a spatial item with an extent specified by the given Envelope to the index. More...
|
|
void | Query (Envelope searchEnv, IItemVisitor< T > visitor) |
| Queries the index for all items whose extents intersect the given search Envelope, and applies an IItemVisitor{T} to them. Note that some kinds of indexes may also return objects which do not in fact intersect the query envelope. More...
|
|
bool | Remove (Envelope itemEnv, T item) |
| Removes a single item from the tree. More...
|
|
|
override IList< IBoundable
< Envelope, TItem > > | CreateParentBoundables (IList< IBoundable< Envelope, TItem >> childBoundables, int newLevel) |
| Creates the parent level for the given child level. First, orders the items by the x-values of the midpoints, and groups them into vertical slices. For each slice, orders the items by the y-values of the midpoints, and group them into runs of size M (the node capacity). For each run, creates a new (parent) node. More...
|
|
IList< IBoundable< Envelope,
TItem > > | CreateParentBoundablesFromVerticalSlice (IList< IBoundable< Envelope, TItem >> childBoundables, int newLevel) |
|
IList< IBoundable< Envelope,
TItem > >[] | VerticalSlices (IList< IBoundable< Envelope, TItem >> childBoundables, int sliceCount) |
|
override AbstractNode
< Envelope, TItem > | CreateNode (int level) |
|
override IComparer< IBoundable
< Envelope, TItem > > | GetComparer () |
|
| AbstractSTRtree (int nodeCapacity) |
| Constructs an AbstractSTRtree with the specified maximum number of child nodes that a node may have. More...
|
|
virtual IList< IBoundable< T,
TItem > > | CreateParentBoundables (IList< IBoundable< T, TItem >> childBoundables, int newLevel) |
| Sorts the childBoundables then divides them into groups of size M, where M is the node capacity. More...
|
|
AbstractNode< T, TItem > | LastNode (IList< IBoundable< T, TItem >> nodes) |
|
int | GetSize (AbstractNode< T, TItem > node) |
|
int | GetDepth (AbstractNode< T, TItem > node) |
|
void | Insert (T bounds, TItem item) |
|
IList< TItem > | Query (T searchBounds) |
| Also builds the tree, if necessary. More...
|
|
void | Query (T searchBounds, IItemVisitor< TItem > visitor) |
|
bool | Remove (T searchBounds, TItem item) |
| Removes an item from the tree. (Builds the tree, if necessary.) More...
|
|
IList< IBoundable< T, TItem > > | BoundablesAtLevel (int level) |
|
A query-only R-tree created using the Sort-Tile-Recursive (STR) algorithm. For two-dimensional spatial data. The STR packed R-tree is simple to implement and maximizes space utilization; that is, as many leaves as possible are filled to capacity. Overlap between nodes is far less than in a basic R-tree. However, once the tree has been built (explicitly or on the first call to #query), items may not be added or removed. Described in: P. Rigaux, Michel Scholl and Agnes Voisard. Spatial Databases With Application To GIS. Morgan Kaufmann, San Francisco, 2002.