summaryrefslogtreecommitdiff
path: root/src/de/lmu/ifi/dbs/elki/index/tree/spatial/rstarvariants/rstar/RStarTree.java
diff options
context:
space:
mode:
authorAndrej Shadura <andrewsh@debian.org>2019-03-09 22:30:28 +0000
committerAndrej Shadura <andrewsh@debian.org>2019-03-09 22:30:28 +0000
commitcde76aeb42240f7270bc6605c606ae07d2dc5a7d (patch)
treec3ebf1d7745224f524da31dbabc5d76b9ea75916 /src/de/lmu/ifi/dbs/elki/index/tree/spatial/rstarvariants/rstar/RStarTree.java
Import Upstream version 0.4.0~beta1
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/index/tree/spatial/rstarvariants/rstar/RStarTree.java')
-rw-r--r--src/de/lmu/ifi/dbs/elki/index/tree/spatial/rstarvariants/rstar/RStarTree.java99
1 files changed, 99 insertions, 0 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/index/tree/spatial/rstarvariants/rstar/RStarTree.java b/src/de/lmu/ifi/dbs/elki/index/tree/spatial/rstarvariants/rstar/RStarTree.java
new file mode 100644
index 00000000..6078c794
--- /dev/null
+++ b/src/de/lmu/ifi/dbs/elki/index/tree/spatial/rstarvariants/rstar/RStarTree.java
@@ -0,0 +1,99 @@
+package de.lmu.ifi.dbs.elki.index.tree.spatial.rstarvariants.rstar;
+/*
+This file is part of ELKI:
+Environment for Developing KDD-Applications Supported by Index-Structures
+
+Copyright (C) 2011
+Ludwig-Maximilians-Universität München
+Lehr- und Forschungseinheit für Datenbanksysteme
+ELKI Development Team
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+import de.lmu.ifi.dbs.elki.index.tree.spatial.SpatialDirectoryEntry;
+import de.lmu.ifi.dbs.elki.index.tree.spatial.SpatialEntry;
+import de.lmu.ifi.dbs.elki.index.tree.spatial.rstarvariants.NonFlatRStarTree;
+import de.lmu.ifi.dbs.elki.index.tree.spatial.rstarvariants.bulk.BulkSplit;
+import de.lmu.ifi.dbs.elki.index.tree.spatial.rstarvariants.util.InsertionStrategy;
+import de.lmu.ifi.dbs.elki.logging.Logging;
+import de.lmu.ifi.dbs.elki.persistent.PageFile;
+import de.lmu.ifi.dbs.elki.utilities.documentation.Description;
+import de.lmu.ifi.dbs.elki.utilities.documentation.Reference;
+import de.lmu.ifi.dbs.elki.utilities.documentation.Title;
+
+/**
+ * RStarTree is a spatial index structure based on the concepts of the R*-Tree.
+ * Apart from organizing the objects it also provides several methods to search
+ * for certain object in the structure and ensures persistence.
+ *
+ * @author Elke Achtert
+ *
+ * @apiviz.has RStarTreeNode oneway - - contains
+ */
+@Title("R*-Tree")
+@Description("Balanced index structure based on bounding rectangles.")
+@Reference(authors = "N. Beckmann, H.-P. Kriegel, R. Schneider, B. Seeger", title = "The R*-tree: an efficient and robust access method for points and rectangles", booktitle = "Proceedings of the 1990 ACM SIGMOD International Conference on Management of Data, Atlantic City, NJ, May 23-25, 1990", url = "http://dx.doi.org/10.1145/93597.98741")
+public class RStarTree extends NonFlatRStarTree<RStarTreeNode, SpatialEntry> {
+ /**
+ * The logger for this class.
+ */
+ private static final Logging logger = Logging.getLogger(RStarTree.class);
+
+ /**
+ * Constructor.
+ *
+ * @param pagefile Page file
+ * @param bulkSplitter bulk load strategy
+ * @param insertionStrategy the strategy to find the insertion child
+ */
+ public RStarTree(PageFile<RStarTreeNode> pagefile, BulkSplit bulkSplitter, InsertionStrategy insertionStrategy) {
+ super(pagefile, bulkSplitter, insertionStrategy);
+ }
+
+ @Override
+ protected SpatialEntry createRootEntry() {
+ return new SpatialDirectoryEntry(0, null);
+ }
+
+ @Override
+ protected SpatialEntry createNewDirectoryEntry(RStarTreeNode node) {
+ return new SpatialDirectoryEntry(node.getPageID(), node.computeMBR());
+ }
+
+ /**
+ * Creates a new leaf node with the specified capacity.
+ *
+ * @return a new leaf node
+ */
+ @Override
+ protected RStarTreeNode createNewLeafNode() {
+ return new RStarTreeNode(leafCapacity, true);
+ }
+
+ /**
+ * Creates a new directory node with the specified capacity.
+ *
+ * @return a new directory node
+ */
+ @Override
+ protected RStarTreeNode createNewDirectoryNode() {
+ return new RStarTreeNode(dirCapacity, false);
+ }
+
+ @Override
+ protected Logging getLogger() {
+ return logger;
+ }
+} \ No newline at end of file