private void setMaxLevelOnAllNodes() { int nodes = lg.getNodes(); for (int node = 0; node < nodes; node++) { lg.setLevel(node, nodes); } }
@Test public void testSortHighLevelFirst() { GraphHopperStorage g = createGHStorage(new RAMDirectory(), encodingManager, false); final CHGraph lg = g.getGraph(CHGraph.class); lg.getNodeAccess().ensureNode(4); lg.setLevel(1, 10); lg.setLevel(2, 30); lg.setLevel(3, 20); // nodes with high level should come first to be covered by lower level nodes List<Integer> list = Arrays.asList(1, 2, 3); Collections.sort(list, new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { return lg.getLevel(o2) - lg.getLevel(o1); } }); assertEquals("[2, 3, 1]", list.toString()); }
private boolean prepareNodes() { int nodes = prepareGraph.getNodes(); for (int node = 0; node < nodes; node++) { prepareGraph.setLevel(node, maxLevel); } periodicUpdateSW.start(); for (int node = 0; node < nodes; node++) { float priority = oldPriorities[node] = calculatePriority(node); sortedNodes.insert(node, priority); } periodicUpdateSW.stop(); return !sortedNodes.isEmpty(); }
prepareGraph.setLevel(polledNode, level); level++; contractionSW.stop();
sc0_6.setWeight(sc0_5.getWeight() + w.calcWeight(edgeState56, false, x)).setDistance(6).setFlags(oneDirFlags); sc0_6.setSkippedEdges(tmpEdgeId, edgeState56.getEdge()); g.setLevel(0, 10); g.setLevel(6, 9); g.setLevel(5, 8); g.setLevel(4, 7); g.setLevel(3, 6); g.setLevel(2, 5); g.setLevel(1, 4); g.setLevel(10, 3);
private void runTestWithDirectionDependentEdgeSpeed( int speed, int revSpeed, int from, int to, IntArrayList expectedPath, FlagEncoder encoder) { EncodingManager encodingManager = new EncodingManager(encoder); FastestWeighting weighting = new FastestWeighting(encoder); AlgorithmOptions algoOpts = AlgorithmOptions.start().weighting(weighting).build(); GraphHopperStorage graph = createGHStorage(encodingManager, Arrays.asList(weighting), false); EdgeIteratorState edge = graph.edge(0, 1, 2, true); long flags = edge.getFlags(); flags = encoder.setSpeed(flags, speed); flags = encoder.setReverseSpeed(flags, revSpeed); edge.setFlags(flags); graph.edge(1, 2, 1, true); CHGraph chGraph = graph.getGraph(CHGraph.class); for (int i = 0; i < 3; ++i) { chGraph.setLevel(i, i); } graph.freeze(); RoutingAlgorithm algo = createCHAlgo(graph, chGraph, true, algoOpts); Path p = algo.calcPath(from, to); assertEquals(3, p.getDistance(), 1.e-3); assertEquals(p.toString(), expectedPath, p.calcNodes()); }
@Test public void testEdgeFilter() { graph = createGHStorage(); CHGraph g = getGraph(graph); g.edge(0, 1, 10, true); g.edge(0, 2, 20, true); g.edge(2, 3, 30, true); g.edge(10, 11, 1, true); graph.freeze(); CHEdgeIteratorState tmpIter = g.shortcut(3, 4); tmpIter.setDistance(40).setFlags(carEncoder.setAccess(0, true, true)); assertEquals(EdgeIterator.NO_EDGE, tmpIter.getSkippedEdge1()); assertEquals(EdgeIterator.NO_EDGE, tmpIter.getSkippedEdge2()); g.shortcut(0, 4).setDistance(40).setFlags(carEncoder.setAccess(0, true, true)); g.setLevel(0, 1); g.setLevel(4, 1); EdgeIterator iter = g.createEdgeExplorer(new LevelEdgeFilter(g)).setBaseNode(0); assertEquals(1, GHUtility.count(iter)); iter = g.createEdgeExplorer().setBaseNode(2); assertEquals(2, GHUtility.count(iter)); tmpIter = g.shortcut(5, 6); tmpIter.setSkippedEdges(1, 2); assertEquals(1, tmpIter.getSkippedEdge1()); assertEquals(2, tmpIter.getSkippedEdge2()); }
chGraph.setLevel(i, i);