Well, I now tried this SLD (Geoserver validated it now):
<?xml version="1.0" encoding="UTF-8"?>
trnsfrm_meta_outputmap
trnsfrm_meta_outputmap
-0.8290 - -0.4632
-0.8290 - -0.4632
ogc:PropertyNamepercentage_change</ogc:PropertyName>
ogc:Literal-0.828977</ogc:Literal>
</ogc:PropertyIsGreaterThan>
ogc:PropertyIsLessThanOrEqualTo
ogc:PropertyNamepercentage_change</ogc:PropertyName>
ogc:Literal-0.463182</ogc:Literal>
</ogc:PropertyIsLessThanOrEqualTo>
</ogc:And>
</ogc:Filter>
se:PolygonSymbolizer
se:Fill
<se:SvgParameter name=“fill”>#0000ff</se:SvgParameter>
</se:Fill>
se:Stroke
<se:SvgParameter name=“stroke”>#000000</se:SvgParameter>
<se:SvgParameter name=“stroke-width”>0.26</se:SvgParameter>
<se:SvgParameter name=“stroke-linejoin”>bevel</se:SvgParameter>
</se:Stroke>
</se:PolygonSymbolizer>
</se:Rule>
se:Rule
se:Name-0.4632 - -0.0974</se:Name>
se:Description
se:Title-0.4632 - -0.0974</se:Title>
</se:Description>
<ogc:Filter xmlns:ogc=“http://www.opengis.net/ogc”>
ogc:And
ogc:PropertyIsGreaterThan
ogc:PropertyNamepercentage_change</ogc:PropertyName>
ogc:Literal-0.463182</ogc:Literal>
</ogc:PropertyIsGreaterThan>
ogc:PropertyIsLessThanOrEqualTo
ogc:PropertyNamepercentage_change</ogc:PropertyName>
ogc:Literal-ogc:Literal0.0973864</ogc:Literal>
</ogc:Literal>
</ogc:PropertyIsLessThanOrEqualTo>
</ogc:And>
</ogc:Filter>
se:PolygonSymbolizer
se:Fill
<se:SvgParameter name=“fill”>#7f7f7f</se:SvgParameter>
</se:Fill>
se:Stroke
<se:SvgParameter name=“stroke”>#000000</se:SvgParameter>
<se:SvgParameter name=“stroke-width”>0.26</se:SvgParameter>
<se:SvgParameter name=“stroke-linejoin”>bevel</se:SvgParameter>
</se:Stroke>
</se:PolygonSymbolizer>
</se:Rule>
se:Rule
se:Name-0.0974 - 0.2684</se:Name>
se:Description
se:Title-0.0974 - 0.2684</se:Title>
</se:Description>
<ogc:Filter xmlns:ogc=“http://www.opengis.net/ogc”>
ogc:And
ogc:PropertyIsGreaterThan
ogc:PropertyNamepercentage_change</ogc:PropertyName>
ogc:Literal-0.0973864</ogc:Literal>
</ogc:PropertyIsGreaterThan>
ogc:PropertyIsLessThanOrEqualTo
ogc:PropertyNamepercentage_change</ogc:PropertyName>
ogc:Literal0.268409</ogc:Literal>
</ogc:PropertyIsLessThanOrEqualTo>
</ogc:And>
</ogc:Filter>
se:PolygonSymbolizer
se:Fill
<se:SvgParameter name=“fill”>#ffff00</se:SvgParameter>
</se:Fill>
se:Stroke
<se:SvgParameter name=“stroke”>#000000</se:SvgParameter>
<se:SvgParameter name=“stroke-width”>0.26</se:SvgParameter>
<se:SvgParameter name=“stroke-linejoin”>bevel</se:SvgParameter>
</se:Stroke>
</se:PolygonSymbolizer>
</se:Rule>
se:Rule
se:Name0.2684 - 0.6342</se:Name>
se:Description
se:Title0.2684 - 0.6342</se:Title>
</se:Description>
<ogc:Filter xmlns:ogc=“http://www.opengis.net/ogc”>
ogc:And
ogc:PropertyIsGreaterThan
ogc:PropertyNamepercentage_change</ogc:PropertyName>
ogc:Literal0.268409</ogc:Literal>
</ogc:PropertyIsGreaterThan>
ogc:PropertyIsLessThanOrEqualTo
ogc:PropertyNamepercentage_change</ogc:PropertyName>
ogc:Literal0.634205</ogc:Literal>
</ogc:PropertyIsLessThanOrEqualTo>
</ogc:And>
</ogc:Filter>
se:PolygonSymbolizer
se:Fill
<se:SvgParameter name=“fill”>#ff7f00</se:SvgParameter>
</se:Fill>
se:Stroke
<se:SvgParameter name=“stroke”>#000000</se:SvgParameter>
<se:SvgParameter name=“stroke-width”>0.26</se:SvgParameter>
<se:SvgParameter name=“stroke-linejoin”>bevel</se:SvgParameter>
</se:Stroke>
</se:PolygonSymbolizer>
</se:Rule>
se:Rule
se:Name0.6342 - 1.0000</se:Name>
se:Description
se:Title0.6342 - 1.0000</se:Title>
</se:Description>
<ogc:Filter xmlns:ogc=“http://www.opengis.net/ogc”>
ogc:And
ogc:PropertyIsGreaterThan
ogc:PropertyNamepercentage_change</ogc:PropertyName>
ogc:Literal0.634205</ogc:Literal>
</ogc:PropertyIsGreaterThan>
ogc:PropertyIsLessThanOrEqualTo
ogc:PropertyNamepercentage_change</ogc:PropertyName>
ogc:Literal1</ogc:Literal>
</ogc:PropertyIsLessThanOrEqualTo>
</ogc:And>
</ogc:Filter>
se:PolygonSymbolizer
se:Fill
<se:SvgParameter name=“fill”>#ff0000</se:SvgParameter>
</se:Fill>
se:Stroke
<se:SvgParameter name=“stroke”>#000000</se:SvgParameter>
<se:SvgParameter name=“stroke-width”>0.26</se:SvgParameter>
<se:SvgParameter name=“stroke-linejoin”>bevel</se:SvgParameter>
</se:Stroke>
</se:PolygonSymbolizer>
</se:Rule>
</se:FeatureTypeStyle>
and still got this error:
04 Sep 10:10:15 ERROR [geoserver.ows] -
org.geoserver.platform.ServiceException: Rendering process failed
at org.geoserver.wms.map.RenderedImageMapOutputFormat.produceMap(RenderedImageMapOutputFormat.java:507)
at org.geoserver.wms.map.RenderedImageMapOutputFormat.produceMap(RenderedImageMapOutputFormat.java:251)
at org.geoserver.wms.map.RenderedImageMapOutputFormat.produceMap(RenderedImageMapOutputFormat.java:123)
at org.geoserver.wms.GetMap.executeInternal(GetMap.java:521)
at org.geoserver.wms.GetMap.run(GetMap.java:253)
at org.geoserver.wms.GetMap.run(GetMap.java:124)
at org.geoserver.wms.DefaultWebMapService.getMap(DefaultWebMapService.java:328)
at sun.reflect.GeneratedMethodAccessor985.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.geoserver.kml.WebMapServiceKmlInterceptor.invoke(WebMapServiceKmlInterceptor.java:34)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.geoserver.gwc.wms.CacheSeedingWebMapService.invoke(CacheSeedingWebMapService.java:61)
at org.geoserver.gwc.wms.CacheSeedingWebMapService.invoke(CacheSeedingWebMapService.java:35)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.geoserver.gwc.wms.CachingWebMapService.invoke(CachingWebMapService.java:79)
at org.geoserver.gwc.wms.CachingWebMapService.invoke(CachingWebMapService.java:54)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.geoserver.ows.util.RequestObjectLogger.invoke(RequestObjectLogger.java:32)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at com.sun.proxy.$Proxy764.getMap(Unknown Source)
at sun.reflect.GeneratedMethodAccessor944.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.geoserver.ows.Dispatcher.execute(Dispatcher.java:774)
at org.geoserver.ows.Dispatcher.handleRequestInternal(Dispatcher.java:272)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.geoserver.filters.ThreadLocalsCleanupFilter.doFilter(ThreadLocalsCleanupFilter.java:27)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:74)
at org.geoserver.filters.SpringDelegatingFilter.doFilter(SpringDelegatingFilter.java:45)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.geoserver.platform.AdvancedDispatchFilter.doFilter(AdvancedDispatchFilter.java:49)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.vfny.geoserver.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:109)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:311)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:68)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:116)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:72)
at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:91)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:68)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:72)
at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:91)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.geoserver.security.filter.GeoServerAnonymousAuthenticationFilter.doFilter(GeoServerAnonymousAuthenticationFilter.java:53)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:68)
at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:72)
at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:91)
at org.geoserver.security.filter.GeoServerBasicAuthenticationFilter.doFilter(GeoServerBasicAuthenticationFilter.java:82)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:68)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
at org.geoserver.security.filter.GeoServerSecurityContextPersistenceFilter$1.doFilter(GeoServerSecurityContextPersistenceFilter.java:52)
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:72)
at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:91)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:173)
at org.geoserver.security.GeoServerSecurityFilterChainProxy.doFilter(GeoServerSecurityFilterChainProxy.java:134)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.geoserver.filters.LoggingFilter.doFilter(LoggingFilter.java:75)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.geoserver.filters.GZIPFilter.doFilter(GZIPFilter.java:42)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.geoserver.filters.SessionDebugFilter.doFilter(SessionDebugFilter.java:47)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.geoserver.filters.FlushSafeFilter.doFilter(FlushSafeFilter.java:43)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:200)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)
Caused by: java.lang.RuntimeException: java.io.IOException
at org.geotools.data.store.ContentFeatureCollection.features(ContentFeatureCollection.java:168)
at org.geotools.data.store.ContentFeatureCollection.features(ContentFeatureCollection.java:59)
at org.geotools.renderer.lite.StreamingRenderer.drawPlain(StreamingRenderer.java:2475)
at org.geotools.renderer.lite.StreamingRenderer.processStylers(StreamingRenderer.java:2045)
at org.geotools.renderer.lite.StreamingRenderer.paint(StreamingRenderer.java:829)
at org.geoserver.wms.map.RenderedImageMapOutputFormat.produceMap(RenderedImageMapOutputFormat.java:481)
… 110 more
Caused by: java.io.IOException
at org.geotools.jdbc.JDBCFeatureSource.getReaderInternal(JDBCFeatureSource.java:610)
at org.geotools.jdbc.JDBCFeatureStore.getReaderInternal(JDBCFeatureStore.java:225)
at org.geotools.data.store.ContentFeatureSource.getReader(ContentFeatureSource.java:563)
at org.geotools.data.store.ContentFeatureCollection.features(ContentFeatureCollection.java:165)
… 115 more
Caused by: org.postgresql.util.PSQLException: ERROR: invalid input syntax for type double precision: “-”
Position: 501
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2062)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1795)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:479)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:353)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:252)
at org.apache.commons.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:208)
at org.apache.commons.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:208)
at org.geotools.jdbc.JDBCFeatureReader.(JDBCFeatureReader.java:140)
at org.geotools.jdbc.JDBCFeatureSource.getReaderInternal(JDBCFeatureSource.java:580)
… 118 more
the structure of my PostGIS table is:
CREATE TABLE “public”.“trnsfrm_meta_outputmap_jan” (
“scenarioname” varchar COLLATE “default” NOT NULL,
“sequencename” varchar COLLATE “default” NOT NULL,
“kpiname” varchar COLLATE “default” NOT NULL,
“timestamp” date NOT NULL,
“fuel” varchar COLLATE “default” NOT NULL,
“value” float8 NOT NULL,
“the_geom” “public”.“geometry” NOT NULL,
“pk” int4 DEFAULT nextval(‘trnsfrm_meta_outputmap_copy1_pk_seq’::regclass) NOT NULL,
“percentage_change” float8,
“percentage_change_numeric” numeric(8,4),
CONSTRAINT “trnsfrm_meta_outputmap_copy1_pkey1” PRIMARY KEY (“pk”)
)
WITH (OIDS=FALSE)
;
Gesendet: Donnerstag, 04. September 2014 um 11:10 Uhr
Von: “Andrea Aime” <andrea.aime@anonymised.com>
An: “Jan Peters” <petersjan@anonymised.com>, “GeoServer Mailing List List” <geoserver-users@lists.sourceforge.net>
Betreff: Re: Re: [Geoserver-users] SLD styling for negative values
Ing. Andrea Aime
GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549
Eh, I would not trust QGis to generate SLDs GeoServer can interpret (and in this case, not even valid SLDs at all,
regardless of what GeoServer can grok).
Ing. Andrea Aime
@geowolf
Technical Lead
GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549