@Override public void initFromGraph() { inEdgeExplorer = prepareGraph.createEdgeExplorer(DefaultEdgeFilter.inEdges(encoder)); outEdgeExplorer = prepareGraph.createEdgeExplorer(DefaultEdgeFilter.outEdges(encoder)); maxLevel = prepareGraph.getNodes(); maxEdgesCount = prepareGraph.getOriginalEdges(); }
private void initFromGraph() { FlagEncoder prepareFlagEncoder = prepareWeighting.getFlagEncoder(); final EdgeFilter allFilter = DefaultEdgeFilter.allEdges(prepareFlagEncoder); maxLevel = prepareGraph.getNodes(); vehicleAllExplorer = prepareGraph.createEdgeExplorer(allFilter); vehicleAllTmpExplorer = prepareGraph.createEdgeExplorer(allFilter); // Use an alternative to PriorityQueue as it has some advantages: // 1. Gets automatically smaller if less entries are stored => less total RAM used. // Important because Graph is increasing until the end. // 2. is slightly faster // but we need the additional oldPriorities array to keep the old value which is necessary for the update method sortedNodes = new GHTreeMapComposed(); oldPriorities = new float[prepareGraph.getNodes()]; nodeContractor = new NodeBasedNodeContractor(prepareGraph, weighting, pMap); nodeContractor.initFromGraph(); }
@Override public void initFromGraph() { super.initFromGraph(); ignoreNodeFilter = new IgnoreNodeFilter(prepareGraph, maxLevel); final EdgeFilter allFilter = DefaultEdgeFilter.allEdges(encoder); final EdgeFilter remainingNodesFilter = new LevelEdgeFilter(prepareGraph) { @Override public final boolean accept(EdgeIteratorState edgeState) { return super.accept(edgeState) && allFilter.accept(edgeState); } }; remainingEdgeExplorer = prepareGraph.createEdgeExplorer(remainingNodesFilter); prepareAlgo = new DijkstraOneToMany(prepareGraph, prepareWeighting, TraversalMode.NODE_BASED); }
public static String getNodeInfo(CHGraph g, int nodeId, EdgeFilter filter) { CHEdgeExplorer ex = g.createEdgeExplorer(filter); CHEdgeIterator iter = ex.setBaseNode(nodeId); NodeAccess na = g.getNodeAccess(); String str = nodeId + ":" + na.getLatitude(nodeId) + "," + na.getLongitude(nodeId) + "\n"; while (iter.next()) { str += " ->" + iter.getAdjNode() + "(" + iter.getSkippedEdge1() + "," + iter.getSkippedEdge2() + ") " + iter.getEdge() + " \t" + BitUtil.BIG.toBitString(iter.getFlags(), 8) + "\n"; } return str; }
description = "CH"; CHGraph lg = (CHGraph) graph; final CHEdgeExplorer chExplorer = lg.createEdgeExplorer(new LevelEdgeFilter(lg)); MiniPerfTest miniPerf = new MiniPerfTest() { @Override print("unit_testsCH.level_edge_state_next", miniPerf); final CHEdgeExplorer chExplorer2 = lg.createEdgeExplorer(); miniPerf = new MiniPerfTest() { @Override
assertEquals(1, GHUtility.count(g.createEdgeExplorer(carOutFilter).setBaseNode(1))); EdgeIteratorState iter = GHUtility.getEdge(g, 0, 1); assertEquals(1, iter.getAdjNode()); assertEquals(0, GHUtility.count(g.createEdgeExplorer(carOutFilter).setBaseNode(1))); iter = GHUtility.getEdge(g, 0, 1); assertEquals(carFlagEncoder.setProperties(20, true, false), iter.getFlags()); assertEquals(10, iter.getDistance(), 1e-4); assertEquals(1, GHUtility.getNeighbors(g.createEdgeExplorer().setBaseNode(1)).size()); assertEquals(0, GHUtility.getNeighbors(g.createEdgeExplorer(carOutFilter).setBaseNode(1)).size());
@Test public void testSimpleShortcutCreationAndTraversal() { graph = createGHStorage(); graph.edge(1, 3, 10, true); graph.edge(3, 4, 10, true); graph.freeze(); CHGraph lg = graph.getGraph(CHGraph.class); lg.shortcut(1, 4).setWeight(3).setFlags(carEncoder.setProperties(10, true, true)); EdgeExplorer vehicleOutExplorer = lg.createEdgeExplorer(DefaultEdgeFilter.outEdges(carEncoder)); // iteration should result in same nodes even if reusing the iterator assertEquals(GHUtility.asSet(3, 4), GHUtility.getNeighbors(vehicleOutExplorer.setBaseNode(1))); assertEquals(GHUtility.asSet(3, 4), GHUtility.getNeighbors(vehicleOutExplorer.setBaseNode(1))); }
@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()); }
assertEquals(1, GHUtility.count(chGraph.createEdgeExplorer().setBaseNode(1))); assertEquals(1, GHUtility.count(chGraph.createEdgeExplorer().setBaseNode(1))); assertEquals(1, GHUtility.count(chGraph.createEdgeExplorer().setBaseNode(2))); assertEquals(2, graph.getEdges()); assertEquals(3, chGraph.getEdges()); assertEquals(1, GHUtility.count(chGraph.createEdgeExplorer().setBaseNode(2)));
assertEquals(4.5, na.getLongitude(1), 1e-6); assertEquals(9, lg.getNodes()); EdgeIterator iter = lg.createEdgeExplorer().setBaseNode(8); iter.next(); assertEquals(2.05, iter.getDistance(), 1e-6); assertTrue(iter.isForward(carEncoder)); iter = lg.createEdgeExplorer().setBaseNode(7); iter.next(); assertEquals(.7, iter.getDistance(), 1e-6);
@Override public void initFromGraph() { inEdgeExplorer = prepareGraph.createEdgeExplorer(DefaultEdgeFilter.inEdges(encoder)); outEdgeExplorer = prepareGraph.createEdgeExplorer(DefaultEdgeFilter.outEdges(encoder)); maxLevel = prepareGraph.getNodes(); maxEdgesCount = ghStorage.getAllEdges().length(); }
@Override public void initFromGraph() { super.initFromGraph(); ignoreNodeFilter = new IgnoreNodeFilter(prepareGraph, maxLevel); final EdgeFilter allFilter = DefaultEdgeFilter.allEdges(encoder); final EdgeFilter remainingNodesFilter = new LevelEdgeFilter(prepareGraph) { @Override public final boolean accept(EdgeIteratorState edgeState) { return super.accept(edgeState) && allFilter.accept(edgeState); } }; remainingEdgeExplorer = prepareGraph.createEdgeExplorer(remainingNodesFilter); prepareAlgo = new DijkstraOneToMany(prepareGraph, prepareWeighting, TraversalMode.NODE_BASED); }
public static String getNodeInfo(CHGraph g, int nodeId, EdgeFilter filter) { CHEdgeExplorer ex = g.createEdgeExplorer(filter); CHEdgeIterator iter = ex.setBaseNode(nodeId); NodeAccess na = g.getNodeAccess(); String str = nodeId + ":" + na.getLatitude(nodeId) + "," + na.getLongitude(nodeId) + "\n"; while (iter.next()) { str += " ->" + iter.getAdjNode() + "(" + iter.getSkippedEdge1() + "," + iter.getSkippedEdge2() + ") " + iter.getEdge() + " \t" + BitUtil.BIG.toBitString(iter.getFlags(), 8) + "\n"; } return str; }
public static String getNodeInfo(CHGraph g, int nodeId, EdgeFilter filter) { CHEdgeExplorer ex = g.createEdgeExplorer(filter); CHEdgeIterator iter = ex.setBaseNode(nodeId); NodeAccess na = g.getNodeAccess(); String str = nodeId + ":" + na.getLatitude(nodeId) + "," + na.getLongitude(nodeId) + "\n"; while (iter.next()) { str += " ->" + iter.getAdjNode() + "(" + iter.getSkippedEdge1() + "," + iter.getSkippedEdge2() + ") " + iter.getEdge() + " \t" + BitUtil.BIG.toBitString(iter.getFlags(), 8) + "\n"; } return str; }
public static String getNodeInfo( CHGraph g, int nodeId, EdgeFilter filter ) { CHEdgeExplorer ex = g.createEdgeExplorer(filter); CHEdgeIterator iter = ex.setBaseNode(nodeId); NodeAccess na = g.getNodeAccess(); String str = nodeId + ":" + na.getLatitude(nodeId) + "," + na.getLongitude(nodeId) + "\n"; while (iter.next()) { str += " ->" + iter.getAdjNode() + "(" + iter.getSkippedEdge1() + "," + iter.getSkippedEdge2() + ") " + iter.getEdge() + " \t" + BitUtil.BIG.toBitString(iter.getFlags(), 8) + "\n"; } return str; }