/** * Handle surface and wayType encoding */ long handleBikeRelated(ReaderWay way, long encoded, boolean partOfCycleRelation) { String surfaceTag = way.getTag("surface"); String highway = way.getTag("highway"); String trackType = way.getTag("tracktype"); // Populate unpavedBit if ("track".equals(highway) && (trackType == null || !"grade1".equals(trackType)) || "path".equals(highway) && surfaceTag == null || unpavedSurfaceTags.contains(surfaceTag)) { encoded = setBool(encoded, K_UNPAVED, true); } WayType wayType; if (roadValues.contains(highway)) wayType = WayType.ROAD; else wayType = WayType.OTHER_SMALL_WAY; boolean isPushingSection = isPushingSection(way); if (isPushingSection && !partOfCycleRelation || "steps".equals(highway)) wayType = WayType.PUSHING_SECTION; if (way.hasTag("bicycle", intendedValues)) { if (isPushingSection && !way.hasTag("bicycle", "designated")) wayType = WayType.OTHER_SMALL_WAY; else if (wayType == WayType.OTHER_SMALL_WAY || wayType == WayType.PUSHING_SECTION) wayType = WayType.CYCLEWAY; } else if ("cycleway".equals(highway)) wayType = WayType.CYCLEWAY; return wayTypeEncoder.setValue(encoded, wayType.getValue()); }
@Override public long handleWayTags(ReaderWay way, long allowed, long relationFlags) { if (!isAccept(allowed)) return 0; long flags = 0; double wayTypeSpeed = getSpeed(way); if (!isFerry(allowed)) { wayTypeSpeed = applyMaxSpeed(way, wayTypeSpeed); flags = handleSpeed(way, wayTypeSpeed, flags); flags = handleBikeRelated(way, flags, relationFlags > UNCHANGED.getValue()); boolean isRoundabout = way.hasTag("junction", "roundabout") || way.hasTag("junction", "circular"); if (isRoundabout) { flags = setBool(flags, K_ROUNDABOUT, true); } } else { double ferrySpeed = getFerrySpeed(way); flags = handleSpeed(way, ferrySpeed, flags); flags |= directionBitMask; } int priorityFromRelation = 0; if (relationFlags != 0) priorityFromRelation = (int) relationCodeEncoder.getValue(relationFlags); flags = priorityWayEncoder.setValue(flags, handlePriority(way, wayTypeSpeed, priorityFromRelation)); return flags; }
/** * Handle surface and wayType encoding */ long handleBikeRelated(ReaderWay way, long encoded, boolean partOfCycleRelation) { String surfaceTag = way.getTag("surface"); String highway = way.getTag("highway"); String trackType = way.getTag("tracktype"); // Populate unpavedBit if ("track".equals(highway) && (trackType == null || !"grade1".equals(trackType)) || "path".equals(highway) && surfaceTag == null || unpavedSurfaceTags.contains(surfaceTag)) { encoded = setBool(encoded, K_UNPAVED, true); } WayType wayType; if (roadValues.contains(highway)) wayType = WayType.ROAD; else wayType = WayType.OTHER_SMALL_WAY; boolean isPushingSection = isPushingSection(way); if (isPushingSection && !partOfCycleRelation || "steps".equals(highway)) wayType = WayType.PUSHING_SECTION; if (way.hasTag("bicycle", intendedValues)) { if (isPushingSection && !way.hasTag("bicycle", "designated")) wayType = WayType.OTHER_SMALL_WAY; else if (wayType == WayType.OTHER_SMALL_WAY || wayType == WayType.PUSHING_SECTION) wayType = WayType.CYCLEWAY; } else if ("cycleway".equals(highway)) wayType = WayType.CYCLEWAY; return wayTypeEncoder.setValue(encoded, wayType.getValue()); }
|| unpavedSurfaceTags.contains(surfaceTag)) encoded = setBool(encoded, K_UNPAVED, true);
/** * Handle surface and wayType encoding */ long handleBikeRelated(ReaderWay way, long encoded, boolean partOfCycleRelation) { String surfaceTag = way.getTag("surface"); String highway = way.getTag("highway"); String trackType = way.getTag("tracktype"); // Populate unpavedBit if ("track".equals(highway) && (trackType == null || !"grade1".equals(trackType)) || "path".equals(highway) && surfaceTag == null || unpavedSurfaceTags.contains(surfaceTag)) { encoded = setBool(encoded, K_UNPAVED, true); } WayType wayType; if (roadValues.contains(highway)) wayType = WayType.ROAD; else wayType = WayType.OTHER_SMALL_WAY; boolean isPushingSection = isPushingSection(way); if (isPushingSection && !partOfCycleRelation || "steps".equals(highway)) wayType = WayType.PUSHING_SECTION; if (way.hasTag("bicycle", intendedValues)) { if (isPushingSection && !way.hasTag("bicycle", "designated")) wayType = WayType.OTHER_SMALL_WAY; else if (wayType == WayType.OTHER_SMALL_WAY || wayType == WayType.PUSHING_SECTION) wayType = WayType.CYCLEWAY; } else if ("cycleway".equals(highway)) wayType = WayType.CYCLEWAY; return wayTypeEncoder.setValue(encoded, wayType.getValue()); }
@Override public long handleWayTags(ReaderWay way, long allowed, long relationFlags) { if (!isAccept(allowed)) return 0; long flags = 0; double wayTypeSpeed = getSpeed(way); if (!isFerry(allowed)) { wayTypeSpeed = applyMaxSpeed(way, wayTypeSpeed); flags = handleSpeed(way, wayTypeSpeed, flags); flags = handleBikeRelated(way, flags, relationFlags > UNCHANGED.getValue()); boolean isRoundabout = way.hasTag("junction", "roundabout"); if (isRoundabout) { flags = setBool(flags, K_ROUNDABOUT, true); } } else { double ferrySpeed = getFerrySpeed(way, highwaySpeeds.get("living_street"), highwaySpeeds.get("track"), highwaySpeeds.get("primary")); flags = handleSpeed(way, ferrySpeed, flags); flags |= directionBitMask; } int priorityFromRelation = 0; if (relationFlags != 0) priorityFromRelation = (int) relationCodeEncoder.getValue(relationFlags); flags = priorityWayEncoder.setValue(flags, handlePriority(way, wayTypeSpeed, priorityFromRelation)); return flags; }
if (isRoundabout) flags = setBool(flags, K_ROUNDABOUT, true);
@Override public long handleWayTags(ReaderWay way, long allowed, long relationFlags) { if (!isAccept(allowed)) return 0; long flags = 0; double wayTypeSpeed = getSpeed(way); if (!isFerry(allowed)) { wayTypeSpeed = applyMaxSpeed(way, wayTypeSpeed); flags = handleSpeed(way, wayTypeSpeed, flags); flags = handleBikeRelated(way, flags, relationFlags > UNCHANGED.getValue()); boolean isRoundabout = way.hasTag("junction", "roundabout") || way.hasTag("junction", "circular"); if (isRoundabout) { flags = setBool(flags, K_ROUNDABOUT, true); } } else { double ferrySpeed = getFerrySpeed(way); flags = handleSpeed(way, ferrySpeed, flags); flags |= directionBitMask; } int priorityFromRelation = 0; if (relationFlags != 0) priorityFromRelation = (int) relationCodeEncoder.getValue(relationFlags); flags = priorityWayEncoder.setValue(flags, handlePriority(way, wayTypeSpeed, priorityFromRelation)); return flags; }