@Override protected Path extractPath() { if (finished()) return bestPath.extract(); return bestPath; }
@Test public void testExtract() { Graph g = createGraph(); g.edge(1, 2, 10, true); PathBidirRef pw = new PathBidirRef(g, new FastestWeighting(carEncoder)); EdgeExplorer explorer = g.createEdgeExplorer(carOutEdges); EdgeIterator iter = explorer.setBaseNode(1); iter.next(); pw.sptEntry = new SPTEntry(iter.getEdge(), 2, 0); pw.sptEntry.parent = new SPTEntry(EdgeIterator.NO_EDGE, 1, 10); pw.edgeTo = new SPTEntry(EdgeIterator.NO_EDGE, 2, 0); Path p = pw.extract(); assertEquals(IntArrayList.from(new int[]{1, 2}), p.calcNodes()); assertEquals(10, p.getDistance(), 1e-4); }
@Test public void testExtract2() { Graph g = createGraph(); g.edge(1, 2, 10, false); g.edge(2, 3, 20, false); EdgeExplorer explorer = g.createEdgeExplorer(carOutEdges); EdgeIterator iter = explorer.setBaseNode(1); iter.next(); PathBidirRef pw = new PathBidirRef(g, new FastestWeighting(carEncoder)); pw.sptEntry = new SPTEntry(iter.getEdge(), 2, 10); pw.sptEntry.parent = new SPTEntry(EdgeIterator.NO_EDGE, 1, 0); explorer = g.createEdgeExplorer(DefaultEdgeFilter.inEdges(carEncoder)); iter = explorer.setBaseNode(3); iter.next(); pw.edgeTo = new SPTEntry(iter.getEdge(), 2, 20); pw.edgeTo.parent = new SPTEntry(EdgeIterator.NO_EDGE, 3, 0); Path p = pw.extract(); assertEquals(IntArrayList.from(new int[]{1, 2, 3}), p.calcNodes()); assertEquals(30, p.getDistance(), 1e-4); } }
@Override protected Path extractPath() { if (finished()) return bestPath.extract(); return bestPath; }
@Override protected Path extractPath() { if (finished()) return bestPath.extract(); return bestPath; }
@Override protected Path extractPath() { if (finished()) return bestPath.extract(); return bestPath; }
@Override protected Path extractPath() { if (finished()) return bestPath.extract(); return bestPath; }
@Override protected Path extractPath() { if (finished()) return bestPath.extract(); return bestPath; }
pathCh.setEdgeEntryTo(edgeEntryTo); Path path = pathCh.extract(); ret.setTimeMilliseconds(fromIndex, toIndex, path.getTime()); ret.setDistanceMetres(fromIndex, toIndex, path.getDistance());