@Override public long setDefaultValue(long flags) { return setDoubleValue(flags, defaultValue); }
@Override protected long setLowSpeed(long flags, double speed, boolean reverse) { if (reverse) return setBool(reverseSpeedEncoder.setDoubleValue(flags, 0), K_BACKWARD, false); return setBool(speedEncoder.setDoubleValue(flags, 0), K_FORWARD, false); }
@Override protected long setLowSpeed(long flags, double speed, boolean reverse) { if (reverse) return setBool(reverseSpeedEncoder.setDoubleValue(flags, 0), K_BACKWARD, false); return setBool(speedEncoder.setDoubleValue(flags, 0), K_FORWARD, false); }
protected long setLowSpeed(long flags, double speed, boolean reverse) { return setAccess(speedEncoder.setDoubleValue(flags, 0), false, false); }
@Override public long setSpeed(long flags, double speed) { if (speed < 0 || Double.isNaN(speed)) throw new IllegalArgumentException("Speed cannot be negative or NaN: " + speed + ", flags:" + BitUtil.LITTLE.toBitString(flags)); if (speed < speedEncoder.factor / 2) return setLowSpeed(flags, speed, false); if (speed > getMaxSpeed()) speed = getMaxSpeed(); return speedEncoder.setDoubleValue(flags, speed); }
@Override public long setReverseSpeed(long flags, double speed) { if (speed < 0) throw new IllegalArgumentException("Speed cannot be negative: " + speed + ", flags:" + BitUtil.LITTLE.toBitString(flags)); if (speed < speedEncoder.factor / 2) return setLowSpeed(flags, speed, true); if (speed > getMaxSpeed()) speed = getMaxSpeed(); return reverseSpeedEncoder.setDoubleValue(flags, speed); }
@Override public long setReverseSpeed(long flags, double speed) { if (speed < 0) throw new IllegalArgumentException("Speed cannot be negative: " + speed + ", flags:" + BitUtil.LITTLE.toBitString(flags)); if (speed < speedEncoder.factor / 2) return setLowSpeed(flags, speed, true); if (speed > getMaxSpeed()) speed = getMaxSpeed(); return reverseSpeedEncoder.setDoubleValue(flags, speed); }
private long extractTons(ReaderWay way, long flags, EncodedDoubleValue valueEncoder, List<String> keys) { String value = way.getFirstPriorityTag(keys); if (isEmpty(value)) return flags; double val; try { val = stringToTons(value); } catch (Throwable t) { LOG.warn("Unable to extract tons from malformed road attribute '{}' for way (OSM_ID = {}).", value, way.getId(), t); return flags; } try { flags = valueEncoder.setDoubleValue(flags, val); } catch (IllegalArgumentException e) { LOG.warn("Unable to process tons value '{}' for way (OSM_ID = {}).", val, way.getId(), e); } return flags; }
private long extractMeter(ReaderWay way, long flags, EncodedDoubleValue valueEncoder, List<String> keys) { String value = way.getFirstPriorityTag(keys); if (isEmpty(value)) return flags; double val; try { val = stringToMeter(value); } catch (Exception ex) { LOG.warn("Unable to extract meter from malformed road attribute '{}' for way (OSM_ID = {}).", value, way.getId(), ex); return flags; } try { flags = valueEncoder.setDoubleValue(flags, val); } catch (IllegalArgumentException e) { LOG.warn("Unable to process value '{}' for way (OSM_ID = {}).", val, way.getId(), e); } return flags; }
@Override public long handleWayTags(ReaderWay way, long allowed, long relationFlags) { if (!isAccept(allowed)) return 0; long flags = 0; if (!isFerry(allowed)) { String sacScale = way.getTag("sac_scale"); if (sacScale != null) { if ("hiking".equals(sacScale)) flags = speedEncoder.setDoubleValue(flags, MEAN_SPEED); else flags = speedEncoder.setDoubleValue(flags, SLOW_SPEED); } else { flags = speedEncoder.setDoubleValue(flags, MEAN_SPEED); } flags |= directionBitMask; boolean isRoundabout = way.hasTag("junction", "roundabout") || way.hasTag("junction", "circular"); if (isRoundabout) flags = setBool(flags, K_ROUNDABOUT, true); } else { double ferrySpeed = getFerrySpeed(way); flags = setSpeed(flags, ferrySpeed); flags |= directionBitMask; } int priorityFromRelation = 0; if (relationFlags != 0) priorityFromRelation = (int) relationCodeEncoder.getValue(relationFlags); flags = priorityWayEncoder.setValue(flags, handlePriority(way, priorityFromRelation)); return flags; }
@Test public void testSetDoubleValue() { EncodedDoubleValue instance = new EncodedDoubleValue("test", 6, 10, 0.01, 5, 10); assertEquals(10.12, instance.getDoubleValue(instance.setDoubleValue(0, 10.12)), 1e-4); }
flags = carFwdMaxspeedEncoder.setDoubleValue(flags, fwdSpeed); flags = carBwdMaxspeedEncoder.setDoubleValue(flags, bwdSpeed);
@Test public void testMaxValue() { EncodedDoubleValue instance1 = new EncodedDoubleValue("test1", 0, 8, 0.5, 60, 100); long flags = instance1.setDoubleValue(0, instance1.getMaxValue()); assertEquals(100, instance1.getDoubleValue(flags), 1e-1); CarFlagEncoder carEncoder = new CarFlagEncoder(10, 0.5, 0); new EncodingManager(carEncoder); ReaderWay way = new ReaderWay(1); way.setTag("highway", "motorway_link"); way.setTag("maxspeed", "70 mph"); flags = carEncoder.handleWayTags(way, 1, 0); // double speed = AbstractFlagEncoder.parseSpeed("70 mph"); flags = carEncoder.reverseFlags(flags); assertEquals(101.5, carEncoder.getSpeed(flags), 1e-1); }
@Override protected long setLowSpeed( long flags, double speed, boolean reverse ) { if (reverse) return setBool(reverseSpeedEncoder.setDoubleValue(flags, 0), K_BACKWARD, false); return setBool(speedEncoder.setDoubleValue(flags, 0), K_FORWARD, false); }
@Override protected long setLowSpeed( long flags, double speed, boolean reverse ) { if (reverse) return setBool(reverseSpeedEncoder.setDoubleValue(flags, 0), K_BACKWARD, false); return setBool(speedEncoder.setDoubleValue(flags, 0), K_FORWARD, false); }
@Override protected long setLowSpeed(long flags, double speed, boolean reverse) { if (reverse) return setBool(reverseSpeedEncoder.setDoubleValue(flags, 0), K_BACKWARD, false); return setBool(speedEncoder.setDoubleValue(flags, 0), K_FORWARD, false); }
@Override protected long setLowSpeed(long flags, double speed, boolean reverse) { if (reverse) return setBool(reverseSpeedEncoder.setDoubleValue(flags, 0), K_BACKWARD, false); return setBool(speedEncoder.setDoubleValue(flags, 0), K_FORWARD, false); }
@Override public long setReverseSpeed( long flags, double speed ) { if (speed < 0) throw new IllegalArgumentException("Speed cannot be negative: " + speed + ", flags:" + BitUtil.LITTLE.toBitString(flags)); if (speed < speedEncoder.factor / 2) return setLowSpeed(flags, speed, true); if (speed > getMaxSpeed()) speed = getMaxSpeed(); return reverseSpeedEncoder.setDoubleValue(flags, speed); }
@Override public long setReverseSpeed(long flags, double speed) { if (speed < 0) throw new IllegalArgumentException("Speed cannot be negative: " + speed + ", flags:" + BitUtil.LITTLE.toBitString(flags)); if (speed < speedEncoder.factor / 2) return setLowSpeed(flags, speed, true); if (speed > getMaxSpeed()) speed = getMaxSpeed(); return reverseSpeedEncoder.setDoubleValue(flags, speed); }
@Override public long setReverseSpeed(long flags, double speed) { if (speed < 0) throw new IllegalArgumentException("Speed cannot be negative: " + speed + ", flags:" + BitUtil.LITTLE.toBitString(flags)); if (speed < speedEncoder.factor / 2) return setLowSpeed(flags, speed, true); if (speed > getMaxSpeed()) speed = getMaxSpeed(); return reverseSpeedEncoder.setDoubleValue(flags, speed); }