@Override public long handleRelationTags(ReaderRelation relation, long oldRelationFlags) { oldRelationFlags = super.handleRelationTags(relation, oldRelationFlags); int code = 0; if (relation.hasTag("route", "mtb")) code = PREFER.getValue(); int oldCode = (int) relationCodeEncoder.getValue(oldRelationFlags); if (oldCode < code) return relationCodeEncoder.setValue(0, code); return oldRelationFlags; }
@Test public void testUnchangedRelationShouldNotInfluencePriority() { ReaderWay osmWay = new ReaderWay(1); osmWay.setTag("highway", "secondary"); ReaderRelation osmRel = new ReaderRelation(1); osmRel.setTag("description", "something"); long relFlags = encoder.handleRelationTags(osmRel, 0); assertPriority(REACH_DEST.getValue(), osmWay, relFlags); }
long relFlags = encoder.handleRelationTags(osmRel, 0); relFlags = encoder.handleRelationTags(osmRel, 0); flags = encoder.handleWayTags(osmWay, allowed, relFlags); assertEquals(12, encoder.getSpeed(flags), 1e-1); assertPriority(PREFER.getValue(), osmWay, relFlags); osmRel.setTag("network", "lcn"); relFlags = encoder.handleRelationTags(osmRel, 0); flags = encoder.handleWayTags(osmWay, allowed, relFlags); assertEquals(12, encoder.getSpeed(flags), 1e-1); relFlags = encoder.handleRelationTags(osmRel, 0); assertPriority(VERY_NICE.getValue(), osmWay, relFlags); relFlags = encoder.handleRelationTags(osmRel, 0); assertPriority(BEST.getValue(), osmWay, relFlags); osmRel.setTag("route", "bicycle"); osmRel.setTag("network", "lcn"); relFlags = encoder.handleRelationTags(osmRel, 0); assertPriority(PREFER.getValue(), osmWay, relFlags); relFlags = encoder.handleRelationTags(osmRel, 0); String wayType = getWayTypeFromFlags(osmWay, relFlags); assertEquals("get off the bike, unpaved", wayType); osmRel.setTag("route", "bicycle"); osmRel.setTag("network", "lcn"); relFlags = encoder.handleRelationTags(osmRel, 0);
long relFlags = encoder.handleRelationTags(osmRel, 0); relFlags = encoder.handleRelationTags(osmRel, 0); flags = encoder.handleWayTags(osmWay, allowed, relFlags); assertEquals(18, encoder.getSpeed(flags), 1e-1); relFlags = encoder.handleRelationTags(osmRel, 0); flags = encoder.handleWayTags(osmWay, allowed, relFlags); assertPriority(PriorityCode.PREFER.getValue(), osmWay); relFlags = encoder.handleRelationTags(osmRel, 0); flags = encoder.handleWayTags(osmWay, allowed, relFlags); assertPriority(PriorityCode.PREFER.getValue(), osmWay); relFlags = encoder.handleRelationTags(osmRel, 0); flags = encoder.handleWayTags(osmWay, allowed, relFlags); assertEquals(18, encoder.getSpeed(flags), 1e-1);
osmRel.setTag("route", "bicycle"); osmRel.setTag("network", "lcn"); long relFlags = encoder.handleRelationTags(osmRel, 0); long flags = encoder.handleWayTags(osmWay, allowed, relFlags); assertEquals(2, encoder.getSpeed(flags), 1e-1); relFlags = encoder.handleRelationTags(osmRel, 0); flags = encoder.handleWayTags(osmWay, allowed, relFlags); assertEquals(2, encoder.getSpeed(flags), 1e-1); relFlags = encoder.handleRelationTags(osmRel, 0); flags = encoder.handleWayTags(osmWay, allowed, relFlags); assertEquals(2, encoder.getSpeed(flags), 1e-1); relFlags = encoder.handleRelationTags(osmRel, 0); flags = encoder.handleWayTags(osmWay, allowed, relFlags); assertEquals(20, encoder.getSpeed(flags), 1e-1); relFlags = encoder.handleRelationTags(osmRel, 0); flags = encoder.handleWayTags(osmWay, allowed, relFlags); assertEquals(10, encoder.getSpeed(flags), 1e-1); osmWay.setTag("highway", "track"); osmWay.setTag("tracktype", "grade3"); relFlags = encoder.handleRelationTags(osmRel, 0); flags = encoder.handleWayTags(osmWay, allowed, relFlags); assertEquals(PUSHING_SECTION_SPEED, encoder.getSpeed(flags), 1e-1); osmWay.clearTags();
@Test public void testCalcPriority() { long allowed = encoder.acceptBit; ReaderWay osmWay = new ReaderWay(1); ReaderRelation osmRel = new ReaderRelation(1); osmRel.setTag("route", "bicycle"); osmRel.setTag("network", "icn"); long relFlags = encoder.handleRelationTags(osmRel, 0); long flags = encoder.handleWayTags(osmWay, allowed, relFlags); assertEquals((double) BEST.getValue() / BEST.getValue(), encoder.getDouble(flags, PriorityWeighting.KEY), 1e-3); // important: UNCHANGED should not get 0 priority! osmWay = new ReaderWay(1); osmWay.setTag("highway", "somethingelse"); flags = encoder.handleWayTags(osmWay, allowed, 0); assertEquals((double) UNCHANGED.getValue() / BEST.getValue(), encoder.getDouble(flags, PriorityWeighting.KEY), 1e-3); }
@Override public long handleRelationTags(ReaderRelation relation, long oldRelationFlags) { oldRelationFlags = super.handleRelationTags(relation, oldRelationFlags); int code = 0; if (relation.hasTag("route", "mtb")) code = PREFER.getValue(); int oldCode = (int) relationCodeEncoder.getValue(oldRelationFlags); if (oldCode < code) return relationCodeEncoder.setValue(0, code); return oldRelationFlags; }
@Override public long handleRelationTags( OSMRelation relation, long oldRelationFlags ) { oldRelationFlags = super.handleRelationTags(relation, oldRelationFlags); int code = 0; if (relation.hasTag("route", "mtb")) code = PREFER.getValue(); int oldCode = (int) relationCodeEncoder.getValue(oldRelationFlags); if (oldCode < code) return relationCodeEncoder.setValue(0, code); return oldRelationFlags; }
@Override public long handleRelationTags(ReaderRelation relation, long oldRelationFlags) { oldRelationFlags = super.handleRelationTags(relation, oldRelationFlags); int code = 0; if (relation.hasTag("route", "mtb")) code = PREFER.getValue(); int oldCode = (int) relationCodeEncoder.getValue(oldRelationFlags); if (oldCode < code) return relationCodeEncoder.setValue(0, code); return oldRelationFlags; }