@Test public void testReverseSpatialKey() { LocationIndexTree index = createIndex(createTestGraph(encodingManager), 200); assertEquals(IntArrayList.from(new int[]{64, 64, 64, 4}), index.getEntries()); // 10111110111110101010 String str44 = "00000000000000000000000000000000000000000000"; assertEquals(str44 + "01010101111101111101", BitUtil.BIG.toBitString(index.createReverseKey(1.7, 0.099))); }
@Test public void testEdgeFilter() { Graph graph = createTestGraph(encodingManager); LocationIndexTree index = createIndex(graph, -1); assertEquals(1, index.findClosest(-.6, -.6, EdgeFilter.ALL_EDGES).getClosestNode()); assertEquals(2, index.findClosest(-.6, -.6, new EdgeFilter() { @Override public boolean accept(EdgeIteratorState iter) { return iter.getBaseNode() == 2 || iter.getAdjNode() == 2; } }).getClosestNode()); }
@Test public void testInMemIndex3() { LocationIndexTree index = createIndexNoPrepare(createTestGraph(encodingManager), 10000); index.prepareAlgo(); LocationIndexTree.InMemConstructionIndex inMemIndex = index.getPrepareInMemIndex(); assertEquals(IntArrayList.from(new int[]{64, 4}), index.getEntries()); assertEquals(33, inMemIndex.getEntriesOf(0).size()); assertEquals(69, inMemIndex.getEntriesOf(1).size()); assertEquals(0, inMemIndex.getEntriesOf(2).size()); index.dataAccess.create(1024); inMemIndex.store(inMemIndex.root, LocationIndexTree.START_POINTER); assertEquals(1 << 20, index.getCapacity()); QueryResult res = index.findClosest(-.5, -.5, EdgeFilter.ALL_EDGES); assertEquals(1, res.getClosestNode()); }
@Test public void testRMin() { Graph graph = createTestGraph(encodingManager); LocationIndexTree index = createIndex(graph, 50000); //query: 0.05 | -0.3 DistanceCalc distCalc = new DistancePlaneProjection(); double rmin = index.calculateRMin(0.05, -0.3); double check = distCalc.calcDist(0.05, Math.abs(graph.getNodeAccess().getLon(2)) - index.getDeltaLon(), -0.3, -0.3); assertTrue((rmin - check) < 0.0001); double rmin2 = index.calculateRMin(0.05, -0.3, 1); double check2 = distCalc.calcDist(0.05, Math.abs(graph.getNodeAccess().getLat(0)), -0.3, -0.3); assertTrue((rmin2 - check2) < 0.0001); GHIntHashSet points = new GHIntHashSet(); assertEquals(Double.MAX_VALUE, index.calcMinDistance(0.05, -0.3, points), 1e-1); points.add(0); points.add(1); assertEquals(54757.03, index.calcMinDistance(0.05, -0.3, points), 1e-1); /*GraphVisualizer gv = new GraphVisualizer(graph, index.getDeltaLat(), index.getDeltaLon(), index.getCenter(0, 0).lat, index.getCenter(0, 0).lon); try { Thread.sleep(4000); } catch(InterruptedException ie) {}*/ }
@Test public void testInMemIndex() { Graph graph = createTestGraph(encodingManager); LocationIndexTree index = createIndexNoPrepare(graph, 50000); index.prepareAlgo();
@Test public void testSnappedPointAndGeometry() { Graph graph = createTestGraph(encodingManager); LocationIndex index = createIndex(graph, -1); // query directly the tower node QueryResult res = index.findClosest(-0.4, 0.9, EdgeFilter.ALL_EDGES); assertTrue(res.isValid()); assertEquals(new GHPoint(-0.4, 0.9), res.getSnappedPoint()); res = index.findClosest(-0.6, 1.6, EdgeFilter.ALL_EDGES); assertTrue(res.isValid()); assertEquals(new GHPoint(-0.6, 1.6), res.getSnappedPoint()); // query the edge (1,3). The edge (0,4) has 27674 as distance res = index.findClosest(-0.2, 0.3, EdgeFilter.ALL_EDGES); assertTrue(res.isValid()); assertEquals(26936, res.getQueryDistance(), 1); assertEquals(new GHPoint(-0.441624, 0.317259), res.getSnappedPoint()); }