/* * Copyright (c) 2016 Vivid Solutions. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * and Eclipse Distribution License v. 1.0 which accompanies this distribution. * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html * and the Eclipse Distribution License is available at * * http://www.eclipse.org/org/documents/edl-v10.php. */ package test.jts.index; import java.util.ArrayList; import java.util.List; import org.locationtech.jts.geom.Envelope; import org.locationtech.jts.index.quadtree.Quadtree; import org.locationtech.jts.index.strtree.STRtree; /** * @version 1.7 */ public class TreeTimeTest { public static final int NUM_ITEMS = 10000; public static void main(String[] args) throws Exception { int n = 10000; TreeTimeTest test = new TreeTimeTest(); List items = IndexTester.createGridItems(n); System.out.println("----------------------------------------------"); System.out.println("Dummy run to ensure classes are loaded before real run"); System.out.println("----------------------------------------------"); test.run(items); System.out.println("----------------------------------------------"); System.out.println("Real run"); System.out.println("----------------------------------------------"); test.run(items); } public TreeTimeTest() { } public List run(List items) throws Exception { ArrayList indexResults = new ArrayList(); System.out.println("# items = " + items.size()); indexResults.add(run(new QuadtreeIndex(), items)); indexResults.add(run(new STRtreeIndex(10), items)); //indexResults.add(run(new QXtreeIndex(), n)); //indexResults.add(run(new EnvelopeListIndex(), n)); return indexResults; } public IndexTester.IndexResult run(Index index, List items) throws Exception { return new IndexTester(index).testAll(items); } class STRtreeIndex implements Index { public String toString() { return "STR[M=" + index.getNodeCapacity() + "]"; } // public String toString() { return "" + index.getNodeCapacity() + ""; } public STRtreeIndex(int nodeCapacity) { index = new STRtree(nodeCapacity); } STRtree index; public void insert(Envelope itemEnv, Object item) { index.insert(itemEnv, item); } public List query(Envelope searchEnv) { return index.query(searchEnv); } public void finishInserting() { index.build(); } } class QuadtreeIndex implements Index { Quadtree index = new Quadtree(); public String toString() { return "Quad"; } public void insert(Envelope itemEnv, Object item) { index.insert(itemEnv, item); } public List query(Envelope searchEnv) { return index.query(searchEnv); } public void finishInserting() { } } class EnvelopeListIndex implements Index { EnvelopeList index = new EnvelopeList(); public String toString() { return "Env"; } public void insert(Envelope itemEnv, Object item) { index.add(itemEnv); } public List query(Envelope searchEnv) { return index.query(searchEnv); } public void finishInserting() { } } }