PR with potential fix: https://github.com/geoserver/geoserver/pull/1571
Use parseDouble instead of convert function to create renderable sld rules, and only if ‘normalize’ boolean is true.
The ‘convert’ function creates SLD rules that are not renderable (exception included at bottom):
<PropertyIsGreaterThanOrEqualTo>
<Function name="convert">
<PropertyName>value</PropertyName>
<Literal>java.lang.Double</Literal>
</Function>
<Literal>220.0</Literal>
</PropertyIsGreaterThanOrEqualTo>
Switching to ‘parseDouble’ produces renderable SLD:
<PropertyIsGreaterThanOrEqualTo>
<Function name="parseDouble">
<PropertyName>value</PropertyName>
</Function>
<Literal>220.0</Literal>
</PropertyIsGreaterThanOrEqualTo>
The exception caused by the convert function is:
Caused by: java.lang.IllegalArgumentException: Filter Function problem for function convert argument #1 - expected type Class
at org.geotools.filter.function.FilterFunction_Convert.evaluate(FilterFunction_Convert.java:51)
at org.geotools.filter.FilterAbstract.eval(FilterAbstract.java:95)
at org.geotools.filter.MultiCompareFilterImpl.evaluate(MultiCompareFilterImpl.java:64)
at org.geotools.filter.AndImpl.evaluate(AndImpl.java:44)
at org.geotools.filter.OrImpl.evaluate(OrImpl.java:41)
at org.geotools.data.FilteringFeatureReader.hasNext(FilteringFeatureReader.java:133)
at org.geotools.data.store.ContentFeatureCollection$WrappingFeatureIterator.hasNext(ContentFeatureCollection.java:143)
at org.geotools.renderer.lite.StreamingRenderer.drawPlain(StreamingRenderer.java:2294)
at org.geotools.renderer.lite.StreamingRenderer.processStylers(StreamingRenderer.java:1917)
at org.geotools.renderer.lite.StreamingRenderer.paint(StreamingRenderer.java:833)
at org.geoserver.wms.map.RenderedImageMapOutputFormat.produceMap(RenderedImageMapOutputFormat.java:548)
... 112 more
|