|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object de.lmu.ifi.dbs.elki.index.tree.IndexTree<N,E> de.lmu.ifi.dbs.elki.index.tree.spatial.SpatialIndexTree<N,E> de.lmu.ifi.dbs.elki.index.tree.spatial.rstarvariants.AbstractRStarTree<N,E>
N
- Node typeE
- Entry typepublic abstract class AbstractRStarTree<N extends AbstractRStarTreeNode<N,E>,E extends SpatialEntry>
Abstract superclass for index structures based on a R*-Tree. Implementation Note: The restriction on NumberVector (as opposed to e.g. FeatureVector) is intentional, because we have spatial requirements.
Field Summary | |
---|---|
protected BulkSplit |
bulkSplitter
The strategy for bulk load. |
int |
distanceCalcs
For counting the number of distance computations. |
protected static boolean |
extraIntegrityChecks
Development flag: This will enable some extra integrity checks on the tree. |
protected int |
height
The height of this R*-Tree. |
protected InsertionStrategy |
insertionStrategy
The insertion strategy to use |
(package private) E |
lastInsertedEntry
The last inserted entry |
protected SplitStrategy<? super E> |
nodeSplitter
The split strategy |
protected Map<Integer,Boolean> |
reinsertions
Contains a boolean for each level of this R*-Tree that indicates if there was already a reinsert operation in this level during the current insert / delete operation. |
Fields inherited from class de.lmu.ifi.dbs.elki.index.tree.IndexTree |
---|
dirCapacity, dirMinimum, initialized, leafCapacity, leafMinimum |
Constructor Summary | |
---|---|
AbstractRStarTree(PageFile<N> pagefile,
BulkSplit bulkSplitter,
InsertionStrategy insertionStrategy)
Constructor |
Method Summary | |
---|---|
protected void |
adjustTree(IndexTreePath<E> subtree)
Adjusts the tree after insertion of some nodes. |
protected abstract void |
bulkLoad(List<E> entrys)
Performs a bulk load on this RTree with the specified data. |
boolean |
canBulkLoad()
Test whether a bulk insert is still possible. |
protected IndexTreePath<E> |
choosePath(IndexTreePath<E> subtree,
SpatialComparable mbr,
int level)
Chooses the best path of the specified subtree for insertion of the given mbr at the specified level. |
protected void |
clearReinsertions()
Clears the reinsertions. |
protected abstract int |
computeHeight()
Computes the height of this RTree. |
private void |
condenseTree(IndexTreePath<E> subtree,
Stack<N> stack)
Condenses the tree after deletion of some nodes. |
protected TreeIndexPathComponent<E> |
containedTest(N node,
SpatialComparable mbr)
Test on whether or not any child of node contains
mbr . |
protected List<N> |
createBulkLeafNodes(List<E> objects)
Creates and returns the leaf nodes for bulk load. |
protected abstract E |
createNewDirectoryEntry(N node)
Creates a new directory entry representing the specified node. |
protected IndexTreePath<E> |
createNewRoot(N oldRoot,
N newNode)
Creates a new root node that points to the two specified child nodes and return the path to the new root. |
protected void |
deletePath(IndexTreePath<E> deletionPath)
Delete a leaf at a given path - deletions for non-leaves are not supported! |
void |
doExtraIntegrityChecks()
Perform additional integrity checks. |
protected IndexTreePath<E> |
findPathToObject(IndexTreePath<E> subtree,
SpatialComparable mbr,
DBID id)
Returns the path to the leaf entry in the specified subtree that represents the data object with the specified mbr and id. |
int |
getHeight()
Returns the height of this R*-Tree. |
private void |
getLeafNodes(N node,
List<E> result,
int currentLevel)
Determines the entries pointing to the leaf nodes of the specified subtree |
private TreeIndexPathComponent<E> |
getLeastEnlargement(N node,
SpatialComparable mbr)
Returns the path information of the entry of the specified node with the least enlargement if the given mbr would be inserted into. |
List<E> |
getLeaves()
Returns a list of entries pointing to the leaf entries of this spatial index. |
protected abstract boolean |
hasOverflow(N node)
Returns true if in the specified node an overflow occurred, false otherwise. |
protected abstract boolean |
hasUnderflow(N node)
Returns true if in the specified node an underflow occurred, false otherwise. |
protected void |
initializeCapacities(E exampleLeaf)
Determines the maximum and minimum number of entries in a node. |
void |
initializeFromFile(TreeIndexHeader header,
PageFile<N> file)
Initializes this R*-Tree from an existing persistent file. |
protected void |
insertDirectoryEntry(E entry,
int level)
Inserts the specified directory entry at the specified level into this R*-Tree. |
void |
insertLeaf(E leaf)
Add a new leaf entry to the tree. |
protected void |
insertLeafEntry(E entry)
Inserts the specified leaf entry into this R*-Tree. |
private N |
overflowTreatment(N node,
IndexTreePath<E> path)
Treatment of overflow in the specified node: if the node is not the root node and this is the first call of overflowTreatment in the given level during insertion the specified node will be reinserted, otherwise the node will be split. |
protected void |
reInsert(N node,
int level,
IndexTreePath<E> path)
Reinserts the specified node at the specified level. |
protected void |
setHeight(int height)
Sets the height of this R*-Tree. |
private N |
split(N node)
Splits the specified node and returns the newly created split node. |
String |
toString()
Returns a string representation of this R*-Tree. |
Methods inherited from class de.lmu.ifi.dbs.elki.index.tree.IndexTree |
---|
createEmptyRoot, createHeader, createNewDirectoryNode, createNewLeafNode, createRootEntry, deleteNode, getFile, getLogger, getNode, getNode, getPageFileStatistics, getPageID, getPageSize, getRoot, getRootEntry, getRootID, getRootPath, initialize, initialize, isRoot, postDelete, preInsert, writeNode |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
protected static final boolean extraIntegrityChecks
protected final Map<Integer,Boolean> reinsertions
protected int height
public int distanceCalcs
E extends SpatialEntry lastInsertedEntry
protected BulkSplit bulkSplitter
protected SplitStrategy<? super E extends SpatialEntry> nodeSplitter
protected final InsertionStrategy insertionStrategy
Constructor Detail |
---|
public AbstractRStarTree(PageFile<N> pagefile, BulkSplit bulkSplitter, InsertionStrategy insertionStrategy)
pagefile
- Page filebulkSplitter
- bulk load strategyinsertionStrategy
- the strategy for finding the insertion candidate.Method Detail |
---|
protected IndexTreePath<E> findPathToObject(IndexTreePath<E> subtree, SpatialComparable mbr, DBID id)
subtree
- the subtree to be testedmbr
- the mbr to look forid
- the id to look for
public void insertLeaf(E leaf)
SpatialIndexTree
insertLeaf
in class SpatialIndexTree<N extends AbstractRStarTreeNode<N,E>,E extends SpatialEntry>
leaf
- Leaf entryprotected void insertLeafEntry(E entry)
entry
- the leaf entry to be insertedprotected void insertDirectoryEntry(E entry, int level)
entry
- the directory entry to be insertedlevel
- the level at which the directory entry is to be insertedprotected void deletePath(IndexTreePath<E> deletionPath)
deletionPath
- Path to deletepublic void initializeFromFile(TreeIndexHeader header, PageFile<N> file)
initializeFromFile
in class IndexTree<N extends AbstractRStarTreeNode<N,E>,E extends SpatialEntry>
protected void initializeCapacities(E exampleLeaf)
IndexTree
initializeCapacities
in class IndexTree<N extends AbstractRStarTreeNode<N,E>,E extends SpatialEntry>
exampleLeaf
- an object that will be stored in the indexpublic boolean canBulkLoad()
protected List<N> createBulkLeafNodes(List<E> objects)
objects
- the objects to be inserted
protected abstract void bulkLoad(List<E> entrys)
public final int getHeight()
protected void setHeight(int height)
height
- the height to be setprotected abstract int computeHeight()
protected void clearReinsertions()
protected abstract boolean hasOverflow(N node)
node
- the node to be tested for overflow
protected abstract boolean hasUnderflow(N node)
node
- the node to be tested for underflow
protected abstract E createNewDirectoryEntry(N node)
node
- the node to be represented by the new entry
protected IndexTreePath<E> createNewRoot(N oldRoot, N newNode)
oldRoot
- the old root of this RTreenewNode
- the new split node
protected TreeIndexPathComponent<E> containedTest(N node, SpatialComparable mbr)
node
contains
mbr
. If there are several containing children, the child with
the minimum volume is chosen in order to get compact pages.
node
- subtreembr
- MBR to test for
node
containing mbr
with the
minimum volume or null
if none existsprotected IndexTreePath<E> choosePath(IndexTreePath<E> subtree, SpatialComparable mbr, int level)
subtree
- the subtree to be tested for insertionmbr
- the mbr to be insertedlevel
- the level at which the mbr should be inserted (level 1
indicates leaf-level)
private TreeIndexPathComponent<E> getLeastEnlargement(N node, SpatialComparable mbr)
node
- the node which children have to be testedmbr
- the mbr of the node to be inserted
private N overflowTreatment(N node, IndexTreePath<E> path)
node
- the node where an overflow occurredpath
- the path to the specified node
private N split(N node)
node
- the node to be split
protected void reInsert(N node, int level, IndexTreePath<E> path)
node
- the node to be reinsertedlevel
- the level of the nodepath
- the path to the nodeprotected void adjustTree(IndexTreePath<E> subtree)
subtree
- the subtree to be adjustedprivate void condenseTree(IndexTreePath<E> subtree, Stack<N> stack)
subtree
- the subtree to be condensedstack
- the stack holding the nodes to be reinserted after the tree
has been condensedpublic final List<E> getLeaves()
SpatialIndexTree
getLeaves
in class SpatialIndexTree<N extends AbstractRStarTreeNode<N,E>,E extends SpatialEntry>
private void getLeafNodes(N node, List<E> result, int currentLevel)
node
- the subtreeresult
- the result to store the ids incurrentLevel
- the level of the node in the R-Treepublic void doExtraIntegrityChecks()
public String toString()
toString
in class Object
|
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |