if (enableLogging) logger.info(encoder.toString() + " - speed change via feature " + jsonFeature.getId() + ". Old: " + oldSpeed + ", new:" + value); edge.setFlags(encoder.setSpeed(edge.getFlags(), value));
void connectStopsToStreetNetwork() { FlagEncoder footEncoder = ((GraphHopperStorage) graph).getEncodingManager().getEncoder("foot"); final EdgeFilter filter = DefaultEdgeFilter.allEdges(footEncoder); for (Stop stop : feed.stops.values()) { if (stop.location_type == 0) { // Only stops. Not interested in parent stations for now. QueryResult locationQueryResult = walkNetworkIndex.findClosest(stop.stop_lat, stop.stop_lon, filter); int streetNode; if (!locationQueryResult.isValid()) { streetNode = i++; nodeAccess.setNode(streetNode, stop.stop_lat, stop.stop_lon); EdgeIteratorState edge = graph.edge(streetNode, streetNode); edge.setFlags(encoder.setAccess(edge.getFlags(), true, false)); edge.setFlags(footEncoder.setAccess(edge.getFlags(), true, false)); edge.setFlags(footEncoder.setSpeed(edge.getFlags(), 5.0)); } else { streetNode = locationQueryResult.getClosestNode(); } gtfsStorage.getStationNodes().put(stop.stop_id, streetNode); } } }
@Test public void test0SpeedButUnblocked_Issue242() { GraphHopperStorage graph = createGHStorage(false); long flags = carEncoder.setAccess(carEncoder.setSpeed(0, 0), true, true); graph.edge(0, 1).setFlags(flags).setDistance(10); graph.edge(1, 2).setFlags(flags).setDistance(10); RoutingAlgorithm algo = createAlgo(graph); try { Path p = algo.calcPath(0, 2); assertTrue(false); } catch (Exception ex) { assertTrue(ex.getMessage(), ex.getMessage().startsWith("Speed cannot be 0")); } }
@Test public void testTime() { FlagEncoder tmpEnc = new Bike2WeightFlagEncoder(); GraphHopperStorage g = new GraphBuilder(new EncodingManager(tmpEnc)).create(); Weighting w = new FastestWeighting(tmpEnc); long flags = tmpEnc.setSpeed(tmpEnc.setReverseSpeed(tmpEnc.setAccess(0, true, true), 10), 15); EdgeIteratorState edge = GHUtility.createMockedEdgeIteratorState(100000, flags); assertEquals(375 * 60 * 1000, w.calcMillis(edge, false, EdgeIterator.NO_EDGE)); assertEquals(600 * 60 * 1000, w.calcMillis(edge, true, EdgeIterator.NO_EDGE)); g.close(); } }
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()); }
if (enableLogging) logger.info(encoder.toString() + " - speed change via feature " + jsonFeature.getId() + ". Old: " + oldSpeed + ", new:" + value); edge.setFlags(encoder.setSpeed(edge.getFlags(), value));
if (enableLogging) logger.info(encoder.toString() + " - speed change via feature " + jsonFeature.getId() + ". Old: " + oldSpeed + ", new:" + value); edge.setFlags(encoder.setSpeed(edge.getFlags(), value));