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; }
@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()); }
@Test public void testPrios() { graph = createGHStorage(); CHGraph g = getGraph(graph); g.getNodeAccess().ensureNode(30); graph.freeze(); assertEquals(0, g.getLevel(10)); g.setLevel(10, 100); assertEquals(100, g.getLevel(10)); g.setLevel(30, 100); assertEquals(100, g.getLevel(30)); }
@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()))); }
NodeAccess na = lg.getNodeAccess(); assertEquals(0, na.getLatitude(0), 1e-6); assertEquals(1, na.getLongitude(0), 1e-6);
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; }