@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()); }
void initUnpackingGraph(GraphHopperStorage ghStorage, CHGraph g, Weighting w) { final long flags = carEncoder.setProperties(30, true, false); double dist = 1; g.edge(10, 0).setDistance(dist).setFlags(flags); EdgeIteratorState edgeState01 = g.edge(0, 1); edgeState01.setDistance(dist).setFlags(flags); EdgeIteratorState edgeState12 = g.edge(1, 2).setDistance(dist).setFlags(flags); EdgeIteratorState edgeState23 = g.edge(2, 3).setDistance(dist).setFlags(flags); EdgeIteratorState edgeState34 = g.edge(3, 4).setDistance(dist).setFlags(flags); EdgeIteratorState edgeState45 = g.edge(4, 5).setDistance(dist).setFlags(flags); EdgeIteratorState edgeState56 = g.edge(5, 6).setDistance(dist).setFlags(flags); long oneDirFlags = PrepareEncoder.getScFwdDir();
GraphHopperStorage ghStorage = new GraphBuilder(encodingManager).setCHGraph(weighting).create(); CHGraph g = ghStorage.getGraph(CHGraph.class, weighting); g.edge(0, 1).setDistance(12).setFlags(carFlagEncoder.setProperties(10, true, true)); g.edge(0, 2).setDistance(13).setFlags(carFlagEncoder.setProperties(20, true, true)); ghStorage.freeze();
@Test public void testQueryGraph() { graph = createGHStorage(); CHGraph chGraph = getGraph(graph); NodeAccess na = chGraph.getNodeAccess(); na.setNode(0, 1.00, 1.00); na.setNode(1, 1.02, 1.00); na.setNode(2, 1.04, 1.00); EdgeIteratorState edge1 = chGraph.edge(0, 1); chGraph.edge(1, 2); graph.freeze(); chGraph.shortcut(0, 1); QueryGraph qGraph = new QueryGraph(chGraph); QueryResult fromRes = createQR(1.004, 1.01, 0, edge1); QueryResult toRes = createQR(1.019, 1.00, 0, edge1); qGraph.lookup(fromRes, toRes); Graph baseGraph = qGraph.getBaseGraph(); EdgeExplorer explorer = baseGraph.createEdgeExplorer(); assertTrue(chGraph.getNodes() < qGraph.getNodes()); assertEquals(baseGraph.getNodes(), qGraph.getNodes()); // traverse virtual edges and normal edges but no shortcuts! assertEquals(GHUtility.asSet(fromRes.getClosestNode()), GHUtility.getNeighbors(explorer.setBaseNode(0))); assertEquals(GHUtility.asSet(toRes.getClosestNode(), 2), GHUtility.getNeighbors(explorer.setBaseNode(1))); // get neighbors from virtual nodes assertEquals(GHUtility.asSet(0, toRes.getClosestNode()), GHUtility.getNeighbors(explorer.setBaseNode(fromRes.getClosestNode()))); assertEquals(GHUtility.asSet(1, fromRes.getClosestNode()), GHUtility.getNeighbors(explorer.setBaseNode(toRes.getClosestNode()))); }