private long flagsForSpeed(EncodingManager encodingManager, int speedKmPerHour) { ReaderWay way = new ReaderWay(1); way.setTag("highway", "motorway"); way.setTag("maxspeed", String.format("%d km/h", speedKmPerHour)); return encodingManager.handleWayTags(way, 1, 0); }
long wayFlags = encodingManager.handleWayTags(way, includeWay, relationFlags); if (wayFlags == 0) return;
private Graph generatePathDetailsGraph() { final Graph g = new GraphBuilder(carManager).create(); final NodeAccess na = g.getNodeAccess(); na.setNode(1, 52.514, 13.348); na.setNode(2, 52.514, 13.349); na.setNode(3, 52.514, 13.350); na.setNode(4, 52.515, 13.349); na.setNode(5, 52.516, 13.3452); ReaderWay w = new ReaderWay(1); w.setTag("highway", "tertiary"); w.setTag("maxspeed", "50"); EdgeIteratorState tmpEdge; tmpEdge = g.edge(1, 2, 5, true).setName("1-2"); tmpEdge.setFlags(carManager.handleWayTags(w, carManager.acceptWay(w), 0)); tmpEdge = g.edge(4, 5, 5, true).setName("4-5"); tmpEdge.setFlags(carManager.handleWayTags(w, carManager.acceptWay(w), 0)); w.setTag("maxspeed", "100"); tmpEdge = g.edge(2, 3, 5, true).setName("2-3"); tmpEdge.setFlags(carManager.handleWayTags(w, carManager.acceptWay(w), 0)); w.setTag("maxspeed", "10"); tmpEdge = g.edge(3, 4, 10, true).setName("3-4"); tmpEdge.setFlags(carManager.handleWayTags(w, carManager.acceptWay(w), 0)); return g; }
@Test public void testCompatibilityBug() { EncodingManager manager2 = new EncodingManager(FlagEncoderFactory.DEFAULT, "bike2", 8); ReaderWay osmWay = new ReaderWay(1); osmWay.setTag("highway", "footway"); osmWay.setTag("name", "test"); BikeFlagEncoder singleBikeEnc = (BikeFlagEncoder) manager2.getEncoder("bike2"); long flags = manager2.handleWayTags(osmWay, singleBikeEnc.acceptBit, 0); double singleSpeed = singleBikeEnc.getSpeed(flags); assertEquals(4, singleSpeed, 1e-3); assertEquals(singleSpeed, singleBikeEnc.getReverseSpeed(flags), 1e-3); EncodingManager manager = new EncodingManager(FlagEncoderFactory.DEFAULT, "bike2,bike,foot", 8); FootFlagEncoder foot = (FootFlagEncoder) manager.getEncoder("foot"); BikeFlagEncoder bike = (BikeFlagEncoder) manager.getEncoder("bike2"); long acceptBits = foot.acceptBit | bike.acceptBit; flags = manager.handleWayTags(osmWay, acceptBits, 0); assertEquals(singleSpeed, bike.getSpeed(flags), 1e-2); assertEquals(singleSpeed, bike.getReverseSpeed(flags), 1e-2); assertEquals(5, foot.getSpeed(flags), 1e-2); assertEquals(5, foot.getReverseSpeed(flags), 1e-2); }
@Test public void testCombination() { ReaderWay way = new ReaderWay(123); way.setTag("highway", "cycleway"); way.setTag("sac_scale", "hiking"); long flags = em.acceptWay(way); long edgeFlags = em.handleWayTags(way, flags, 0); assertFalse(encoder.isBackward(edgeFlags)); assertFalse(encoder.isForward(edgeFlags)); assertTrue(em.getEncoder("bike").isBackward(edgeFlags)); assertTrue(em.getEncoder("bike").isForward(edgeFlags)); }
@Test public void testRoutingFailsWithInvalidGraph_issue665() { GraphHopperStorage graph = new GraphHopperStorage( new RAMDirectory(), em, true, new GraphExtension.NoOpExtension()); graph.create(100); ReaderWay way = new ReaderWay(0); way.setTag("route", "ferry"); long includeWay = em.acceptWay(way); long relationFlags = 0; long wayFlags = em.handleWayTags(way, includeWay, relationFlags); graph.edge(0, 1).setDistance(247).setFlags(wayFlags); assertTrue(isGraphValid(graph, encoder)); }
@Test public void testMixBikeTypesAndRelationCombination() { ReaderWay osmWay = new ReaderWay(1); osmWay.setTag("highway", "track"); osmWay.setTag("tracktype", "grade1"); ReaderRelation osmRel = new ReaderRelation(1); BikeFlagEncoder bikeEncoder = new BikeFlagEncoder(); MountainBikeFlagEncoder mtbEncoder = new MountainBikeFlagEncoder(); EncodingManager manager = new EncodingManager(bikeEncoder, mtbEncoder); // relation code for network rcn is VERY_NICE for bike and PREFER for mountainbike osmRel.setTag("route", "bicycle"); osmRel.setTag("network", "rcn"); long relFlags = manager.handleRelationTags(osmRel, 0); long allow = bikeEncoder.acceptBit | mtbEncoder.acceptBit; long flags = manager.handleWayTags(osmWay, allow, relFlags); // bike: uninfluenced speed for grade but via network => VERY_NICE // mtb: uninfluenced speed only PREFER assertTrue(bikeEncoder.getDouble(flags, PriorityWeighting.KEY) > mtbEncoder.getDouble(flags, PriorityWeighting.KEY)); }
tmpEdge.setFlags(carManager.handleWayTags(w, carManager.acceptWay(w), 0)); tmpEdge = g.edge(1, 2, 11000, true).setName("1-2"); tmpEdge.setFlags(carManager.handleWayTags(w, carManager.acceptWay(w), 0)); tmpEdge.setFlags(carManager.handleWayTags(w, carManager.acceptWay(w), 0)); tmpEdge = g.edge(1, 4, 10000, true).setName("1-4"); tmpEdge.setFlags(carManager.handleWayTags(w, carManager.acceptWay(w), 0)); tmpEdge = g.edge(2, 5, 11000, true).setName("5-2"); tmpEdge.setFlags(carManager.handleWayTags(w, carManager.acceptWay(w), 0)); tmpEdge.setFlags(carManager.handleWayTags(w, carManager.acceptWay(w), 0)); tmpEdge = g.edge(4, 7, 10000, true).setName("4-7"); tmpEdge.setFlags(carManager.handleWayTags(w, carManager.acceptWay(w), 0)); tmpEdge = g.edge(5, 8, 10000, true).setName("5-8"); tmpEdge.setFlags(carManager.handleWayTags(w, carManager.acceptWay(w), 0)); tmpEdge.setFlags(carManager.handleWayTags(w, carManager.acceptWay(w), 0)); tmpEdge = g.edge(7, 8, 10000, true); PointList list = new PointList(); tmpEdge.setWayGeometry(list); tmpEdge.setName("7-8"); tmpEdge.setFlags(carManager.handleWayTags(w, carManager.acceptWay(w), 0)); tmpEdge.setFlags(carManager.handleWayTags(w, carManager.acceptWay(w), 0)); tmpEdge = g.edge(8, 9, 20000, true); list.clear(); tmpEdge.setName("8-9");
long relFlags = manager.handleRelationTags(osmRel, 0); long allow = defaultBike.acceptBit | lessRelationCodes.acceptBit; long flags = manager.handleWayTags(osmWay, allow, relFlags);
long wayFlags = encodingManager.handleWayTags(way, includeWay, relationFlags); if (wayFlags == 0) return;
long wayFlags = encodingManager.handleWayTags(way, includeWay, relationFlags); if (wayFlags == 0) return;
long wayFlags = encodingManager.handleWayTags(way, includeWay, relationFlags); if (wayFlags == 0) return;
long wayFlags = encodingManager.handleWayTags(way, includeWay, relationFlags); if (wayFlags == 0) return;