From f03c67d357f718628479393aa615e16b34aa2657 Mon Sep 17 00:00:00 2001 From: Dr Josef Karthauser Date: Thu, 3 Sep 2015 21:27:16 +0100 Subject: [PATCH] Fix the quadraticSplit, so that it can't pick the same node for both sides of a split. --- src/main/java/org/neo4j/gis/spatial/rtree/RTreeIndex.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/neo4j/gis/spatial/rtree/RTreeIndex.java b/src/main/java/org/neo4j/gis/spatial/rtree/RTreeIndex.java index 6b5c8661..6a09e0b5 100644 --- a/src/main/java/org/neo4j/gis/spatial/rtree/RTreeIndex.java +++ b/src/main/java/org/neo4j/gis/spatial/rtree/RTreeIndex.java @@ -614,9 +614,11 @@ private Node quadraticSplit(Node indexNode, RelationshipType relationshipType) { Node seed1 = null; Node seed2 = null; double worst = Double.NEGATIVE_INFINITY; - for (Node e : entries) { + for (int i = 0; i < entries.size(); ++i) { + Node e = entries.get(i); Envelope eEnvelope = getChildNodeEnvelope(e, relationshipType); - for (Node e1 : entries) { + for (int j = i + 1; j < entries.size(); ++j) { + Node e1 = entries.get(j); Envelope e1Envelope = getChildNodeEnvelope(e1, relationshipType); double deadSpace = getArea(createEnvelope(eEnvelope, e1Envelope)) - getArea(eEnvelope) - getArea(e1Envelope); if (deadSpace > worst) {