summaryrefslogtreecommitdiff
path: root/src/de/lmu/ifi/dbs/elki/index/tree/spatial/rstarvariants/query/GenericRStarTreeKNNQuery.java
diff options
context:
space:
mode:
authorErich Schubert <erich@debian.org>2012-06-30 00:55:33 +0200
committerAndrej Shadura <andrewsh@debian.org>2019-03-09 22:30:34 +0000
commit4343785ebed9d4145f417d86d581f18a0d31e4ac (patch)
tree546b0aa227d50caf4246be12f89ffcbae924f8e0 /src/de/lmu/ifi/dbs/elki/index/tree/spatial/rstarvariants/query/GenericRStarTreeKNNQuery.java
parent593eae6c91717eb9f4ff5088ba460dd4210509c0 (diff)
parentace5fa7f57d49756c0e1b111a30f3b6a9436c1cb (diff)
Import Debian changes 0.5.0-1
elki (0.5.0-1) unstable; urgency=low * New upstream release: 0.5.0 final.
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/index/tree/spatial/rstarvariants/query/GenericRStarTreeKNNQuery.java')
-rw-r--r--src/de/lmu/ifi/dbs/elki/index/tree/spatial/rstarvariants/query/GenericRStarTreeKNNQuery.java16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/index/tree/spatial/rstarvariants/query/GenericRStarTreeKNNQuery.java b/src/de/lmu/ifi/dbs/elki/index/tree/spatial/rstarvariants/query/GenericRStarTreeKNNQuery.java
index 5129f5ca..09ebb61a 100644
--- a/src/de/lmu/ifi/dbs/elki/index/tree/spatial/rstarvariants/query/GenericRStarTreeKNNQuery.java
+++ b/src/de/lmu/ifi/dbs/elki/index/tree/spatial/rstarvariants/query/GenericRStarTreeKNNQuery.java
@@ -33,6 +33,8 @@ import java.util.Map.Entry;
import de.lmu.ifi.dbs.elki.data.spatial.SpatialComparable;
import de.lmu.ifi.dbs.elki.database.ids.ArrayDBIDs;
import de.lmu.ifi.dbs.elki.database.ids.DBID;
+import de.lmu.ifi.dbs.elki.database.ids.DBIDIter;
+import de.lmu.ifi.dbs.elki.database.ids.DBIDRef;
import de.lmu.ifi.dbs.elki.database.ids.DBIDUtil;
import de.lmu.ifi.dbs.elki.database.ids.DBIDs;
import de.lmu.ifi.dbs.elki.database.ids.ModifiableDBIDs;
@@ -219,8 +221,8 @@ public class GenericRStarTreeKNNQuery<O extends SpatialComparable, D extends Dis
for(int i = 0; i < node.getNumEntries(); i++) {
SpatialEntry entry = node.getEntry(i);
D minMinDist = distanceQuery.getDistanceFactory().infiniteDistance();
- for(DBID id : ids) {
- D minDist = distanceFunction.minDist(entry, relation.get(id));
+ for (DBIDIter iter = ids.iter(); iter.valid(); iter.advance()) {
+ D minDist = distanceFunction.minDist(entry, relation.get(iter));
minMinDist = DistanceUtil.min(minDist, minMinDist);
}
result.add(new DistanceEntry<D, SpatialEntry>(entry, minMinDist, i));
@@ -242,7 +244,7 @@ public class GenericRStarTreeKNNQuery<O extends SpatialComparable, D extends Dis
}
@Override
- public KNNResult<D> getKNNForDBID(DBID id, int k) {
+ public KNNResult<D> getKNNForDBID(DBIDRef id, int k) {
return getKNNForObject(relation.get(id), k);
}
@@ -253,15 +255,15 @@ public class GenericRStarTreeKNNQuery<O extends SpatialComparable, D extends Dis
}
// While this works, it seems to be slow at least for large sets!
final Map<DBID, KNNHeap<D>> knnLists = new HashMap<DBID, KNNHeap<D>>(ids.size());
- for(DBID id : ids) {
- knnLists.put(id, new KNNHeap<D>(k, distanceFunction.getDistanceFactory().infiniteDistance()));
+ for (DBIDIter iter = ids.iter(); iter.valid(); iter.advance()) {
+ knnLists.put(iter.getDBID(), new KNNHeap<D>(k, distanceFunction.getDistanceFactory().infiniteDistance()));
}
batchNN(tree.getRoot(), knnLists);
List<KNNResult<D>> result = new ArrayList<KNNResult<D>>();
- for(DBID id : ids) {
- result.add(knnLists.get(id).toKNNList());
+ for (DBIDIter iter = ids.iter(); iter.valid(); iter.advance()) {
+ result.add(knnLists.get(iter.getDBID()).toKNNList());
}
return result;
}