/** * Used to rescaleDashArray the provided unscaled value. * * @param unscaled the unscaled value. * @param mapScale the mapScale in pixels per meter. * @param uom the unit of measure that will be used to scale. * @return the expression multiplied by the provided scale. */ protected String rescale(String unscaled, Unit<Length> uom) { if (unscaled == null) { return unscaled; } Measure v = new Measure(unscaled, uom); return RescalingMode.RealWorld.rescaleToString(mapScale, v); }
@Override protected void rescaleOption(Map<String, String> options, String key, double defaultValue) { double scaleFactor = (double) scale.evaluate(null, Double.class); String value = options.get(key); if (value == null) { value = String.valueOf(defaultValue); } Measure v = new Measure(value, defaultUnit); String rescaled = RescalingMode.Pixels.rescaleToString(scaleFactor, v); options.put(key, String.valueOf(rescaled)); }
@Override protected void rescaleOption(Map<String, String> options, String key, int defaultValue) { double scaleFactor = (double) scale.evaluate(null, Double.class); String value = options.get(key); if (value == null) { value = String.valueOf(defaultValue); } Measure v = new Measure(value, defaultUnit); String rescaled = RescalingMode.Pixels.rescaleToString(scaleFactor, v); options.put(key, String.valueOf(rescaled)); } }
public Object evaluate(Object feature) { String value = getExpression(0).evaluate(feature, String.class); if (value == null || value.trim().isEmpty()) { return null; } Unit<Length> defaultUnit = getExpression(1).evaluate(feature, Unit.class); Double scaleFactor = getExpression(2).evaluate(feature, Double.class); if (scaleFactor == null) { throw new IllegalArgumentException("Invalid scale factor, it should be non null"); } RescalingMode mode = RescalingMode.KeepUnits; if (getParameters().size() >= 3) { RescalingMode theMode = getExpression(3).evaluate(feature, RescalingMode.class); if (theMode != null) { mode = theMode; } } // compute the rescaling now that we have all the details Measure measure = new Measure(value, defaultUnit); String result = mode.rescaleToString(scaleFactor, measure); return result; } }