use of org.polymap.core.style.model.feature.MappedValues.Mapped in project polymap4-core by Polymap4.
the class NumberGradient2FilterEditor method initValues.
protected void initValues() {
annotation = (NumberRange) prop.info().getAnnotation(NumberRange.class);
df = NumberFormat.getInstance(Polymap.getSessionLocale());
df.setMaximumFractionDigits(2);
df.setMinimumFractionDigits(0);
List<Mapped<Filter, N>> values = prop.get().values();
// defaults
if (values.isEmpty()) {
minimumValue = annotation.from();
maximumValue = annotation.to();
breakpoints = 10;
} else // from prop
{
And first = (And) values.get(0).key();
BinaryComparisonOperator lessThan = (BinaryComparisonOperator) first.getChildren().get(0);
propertyName = ((PropertyName) lessThan.getExpression1()).getPropertyName();
String value = (String) ((Literal) lessThan.getExpression2()).getValue();
lowerBound = Double.parseDouble(value);
And last = (And) values.get(values.size() - 1).key();
BinaryComparisonOperator greaterThan = (BinaryComparisonOperator) last.getChildren().get(0);
value = (String) ((Literal) greaterThan.getExpression2()).getValue();
upperBound = Double.parseDouble(value);
minimumValue = values.get(0).value().doubleValue();
maximumValue = values.get(values.size() - 1).value().doubleValue();
breakpoints = values.size() + 1;
}
}
use of org.polymap.core.style.model.feature.MappedValues.Mapped in project polymap4-core by Polymap4.
the class NumberGradient2MapScaleEditor method initValues.
protected void initValues() {
// calculate map scale
if (site().maxExtent.isPresent()) {
try {
ReferencedEnvelope maxExtent = site().maxExtent.get();
Point mapSize = site().mapSize.get();
maxScale = RendererUtilities.calculateScale(maxExtent, mapSize.x, mapSize.y, 120d);
ReferencedEnvelope mapExtent = new ReferencedEnvelope(site().mapExtent.get(), maxExtent.getCoordinateReferenceSystem());
mapScale = RendererUtilities.calculateScale(mapExtent, mapSize.x, mapSize.y, 120d);
System.out.println("Scale: " + mapScale + " -- " + maxScale + " for maxExtent: " + maxExtent);
} catch (TransformException | FactoryException e) {
StatusDispatcher.handleError("Unable to calculate map scale.", e);
}
}
annotation = (NumberRange) prop.info().getAnnotation(NumberRange.class);
List<Mapped<ScaleRange, N>> values = prop.get().values();
// defaults
if (values.isEmpty()) {
lowerBound = 5000;
upperBound = maxScale != -1 ? (int) maxScale : 1000000;
minimumValue = annotation.from();
maximumValue = annotation.to();
breakpoints = 5;
} else // from prop
{
lowerBound = values.get(0).key().max.get();
upperBound = values.get(values.size() - 1).key().min.get();
minimumValue = values.get(0).value().doubleValue();
maximumValue = values.get(values.size() - 1).value().doubleValue();
// 3 intervals -> no extra breakpoint
breakpoints = values.size() - 3;
}
}
use of org.polymap.core.style.model.feature.MappedValues.Mapped in project polymap4-core by Polymap4.
the class ColorGradient2FilterEditor method initValues.
protected void initValues() {
List<Mapped<Filter, java.awt.Color>> values = prop.get().values();
df = NumberFormat.getInstance(Polymap.getSessionLocale());
df.setMaximumFractionDigits(2);
df.setMinimumFractionDigits(0);
// defaults
if (values.isEmpty()) {
minimumValue = Color.LIGHT_GRAY;
maximumValue = Color.BLACK;
breakpoints = 10;
} else // from prop
{
And first = (And) values.get(0).key();
BinaryComparisonOperator lessThan = (BinaryComparisonOperator) first.getChildren().get(0);
propertyName = ((PropertyName) lessThan.getExpression1()).getPropertyName();
String value = (String) ((Literal) lessThan.getExpression2()).getValue();
lowerBound = Double.parseDouble(value);
And last = (And) values.get(values.size() - 1).key();
BinaryComparisonOperator greaterThan = (BinaryComparisonOperator) last.getChildren().get(0);
value = (String) ((Literal) greaterThan.getExpression2()).getValue();
upperBound = Double.parseDouble(value);
// minimumValue = values.get( 0 ).value().doubleValue();
// maximumValue = values.get( values.size() - 1 ).value().doubleValue();
breakpoints = values.size() + 1;
}
}
use of org.polymap.core.style.model.feature.MappedValues.Mapped in project polymap4-core by Polymap4.
the class StyleCompositeSerializer method handle.
protected <V> Iterable<RuleModifier<V, S>> handle(Property<StylePropertyValue<V>> prop) {
StylePropertyValue<V> styleProp = prop.get();
// no value -> nothing to modify
if (styleProp == null || styleProp instanceof NoValue) {
return singletonList(new NoValueRuleModifier());
} else // ConstantValue
if (styleProp instanceof ConstantValue) {
Expression expr = ff.literal(((ConstantValue) styleProp).value());
return singletonList(new SimpleRuleModifier(expr));
} else // AttributeValue
if (styleProp instanceof AttributeValue) {
String attributeName = (String) ((AttributeValue) styleProp).attributeName.get();
Expression expr = ff.property(attributeName);
return singletonList(new SimpleRuleModifier(expr));
} else // FilterMappedValues
if (styleProp instanceof FilterMappedValues) {
List<Mapped<Filter, Object>> values = ((FilterMappedValues) styleProp).values();
return FluentIterable.from(values).transform(mapped -> new SimpleRuleModifier(ff.literal(mapped.value()), mapped.key()));
} else // ScaleMappedValues
if (styleProp instanceof ScaleMappedValues) {
List<Mapped<ScaleRange, Object>> values = ((ScaleMappedValues) styleProp).values();
return FluentIterable.from(values).transform(mapped -> new SimpleRuleModifier(ff.literal(mapped.value()), mapped.key().min.get(), mapped.key().max.get()));
} else {
throw new RuntimeException("Unhandled StylePropertyValue type: " + styleProp.getClass().getSimpleName());
}
}
use of org.polymap.core.style.model.feature.MappedValues.Mapped in project polymap4-core by Polymap4.
the class ColorMap2FilterEditor method initValues.
protected void initValues() {
List<Mapped<Filter, Color>> values = prop.get().values();
for (Mapped<Filter, Color> entry : values) {
PropertyIsEqualTo filter = (PropertyIsEqualTo) entry.key();
propertyName = ((PropertyName) filter.getExpression1()).getPropertyName();
Object value = ((Literal) filter.getExpression2()).getValue();
colorMap.add(new Triple(value, -1, entry.value()));
}
}
Aggregations