[Geoserver-users] SLD styling for negative values

Dear list,
sorry for cross-posting (see also: http://tinyurl.com/nwxvew6) but I am stuck. I am trying to style negative values in Geoserver via SLD and would like to know how the syntax in SLD should look like to do this. What I have is the following:

—snip—

<?xml version="1.0" encoding="UTF-8"?> trnsfrm_meta_outputmap trnsfrm_meta_outputmap -0.8290 - -0.4632 -0.8290 - -0.4632 percentage_change -0.828977 percentage_change -0.463182 #0000ff #000000 0.26 bevel ---snip---

But this throws an error in Geoserver:

Caused by: org.postgresql.util.PSQLException: ERROR: invalid input syntax for type numeric: "-"
    Position: 406

I already tried to change the SLD from this

ogc:Literal-ogc:Literal0.828977</ogc:Literal></ogc:Literal>

to this:

ogc:Literal-0.828977</ogc:Literal>

But this doesn’t work either (Geoserver tells me that my SLD is not valid). I also reduced the number of rows in the PostGIS table to one and tried positive and negative values for the respective field, the error is always the same so I suspect a problem with the SLD.

So my question is: What is the correct way of styling negative values in SLD? Or do I have to look for something else that I have not thougt of so far?

Thanks in advance an best regards
Jan

On Thu, Sep 4, 2014 at 10:46 AM, Jan Peters <petersjan@anonymised.com> wrote:

to this:

<ogc:Literal>-0.828977</ogc:Literal>

But this doesn't work either (Geoserver tells me that my SLD is not
valid). I also reduced the number of rows in the PostGIS table to one and
tried positive and negative values for the respective field, the error is
always the same so I suspect a problem with the SLD.

This one is the correct way. What's the error you're getting? It probably
has nothing to do with the minus sign...

Cheers
Andrea

--

GeoServer Professional Services from the experts! Visit
http://goo.gl/NWWaa2 for more information.

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

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

-------------------------------------------------------

On Thu, Sep 4, 2014 at 10:57 AM, Andrea Aime <andrea.aime@anonymised.com>
wrote:

On Thu, Sep 4, 2014 at 10:46 AM, Jan Peters <petersjan@anonymised.com> wrote:

to this:

<ogc:Literal>-0.828977</ogc:Literal>

But this doesn't work either (Geoserver tells me that my SLD is not
valid). I also reduced the number of rows in the PostGIS table to one and
tried positive and negative values for the respective field, the error is
always the same so I suspect a problem with the SLD.

This one is the correct way. What's the error you're getting? It probably
has nothing to do with the minus sign...

Wait, this is certainly wrong:

<ogc:Literal>-<ogc:Literal>0.828977</ogc:Literal>
            </ogc:Literal>

Two nested literals? It should be simply be:

<ogc:PropertyIsLessThanOrEqualTo>
            <ogc:PropertyName>percentage_change</ogc:PropertyName>
            <ogc:Literal>-0.463182</ogc:Literal>
          </ogc:PropertyIsLessThanOrEqualTo>

Cheers
Andrea

--

GeoServer Professional Services from the experts! Visit
http://goo.gl/NWWaa2 for more information.

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

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

-------------------------------------------------------

On Thu, Sep 4, 2014 at 11:06 AM, Jan Peters <petersjan@anonymised.com> wrote:

Well, the double nested Literals is what QGis created automatically.

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).

Cheers
Andrea

--

GeoServer Professional Services from the experts! Visit
http://goo.gl/NWWaa2 for more information.

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

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

-------------------------------------------------------

On Thu, Sep 4, 2014 at 11:12 AM, Jan Peters <petersjan@anonymised.com> wrote:

Ok, I won't tust it. What is the most trustable software to create SLDs
btw?

uDig, generates valid SLD 1.0 files that also have GeoServer own extensions
to the SLD syntax
(instead of QGis, which does SLD 1.1, sometimes invalid, and with its own
sytanx extensions that
GeoServer does not understand)

It would be nice if someone sponsored some days of development so that our
code learns to
parse QGis own extras, but this hasn't happened yet...

Cheers
Andrea

--

GeoServer Professional Services from the experts! Visit
http://goo.gl/NWWaa2 for more information.

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

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

-------------------------------------------------------

Jan, could you please keep the mailing list cc’ed?
About the error, try enabling “verbose logging” and then
see what the sql query being generated is.

Cheers
Andrea

···

On Thu, Sep 4, 2014 at 11:16 AM, Jan Peters <petersjan@anonymised.com> wrote:

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

==

GeoServer Professional Services from the experts! Visit
http://goo.gl/NWWaa2 for more information.

==

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

http://www.geo-solutions.it
http://twitter.com/geosolutions_it


On Thu, Sep 4, 2014 at 11:06 AM, Jan Peters <petersjan@anonymised.com.131…> wrote:

Well, the double nested Literals is what QGis created automatically.

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).

Cheers
Andrea

==

GeoServer Professional Services from the experts! Visit
http://goo.gl/NWWaa2 for more information.

==

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

http://www.geo-solutions.it
http://twitter.com/geosolutions_it


Ah, this cannot work, or course:

SELECT
“pk”,
“percentage_change”,
encode(
ST_AsBinary (ST_Force_2D(“the_geom”)),
‘base64’
) AS “the_geom”
FROM
“public”.“trnsfrm_meta_outputmap_jan”
WHERE
(
“the_geom” && ST_GeomFromText (
‘POLYGON ((3972989.8359375 3248544.234375, 3972989.8359375 3270607.265625, 3980258.6640625 3270607.265625, 3980258.6640625 3248544.234375, 3972989.8359375 3248544.234375))’,
3035
)
AND (
(
“percentage_change” > - 0.828977
AND “percentage_change” <= - 0.463182
)
OR (
“percentage_change” > - 0.463182
AND “percentage_change” <= ‘-’
)
OR (
“percentage_change” > - 0.0973864
AND “percentage_change” <= 0.268409
)
OR (
“percentage_change” > 0.268409
AND “percentage_change” <= 0.634205
)
OR (
“percentage_change” > 0.634205
AND “percentage_change” <= 1.0
)
)
)

···

On Thu, Sep 4, 2014 at 11:16 AM, Jan Peters <petersjan@anonymised.com.> wrote:

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 percentage_change -0.828977

</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

==

GeoServer Professional Services from the experts! Visit
http://goo.gl/NWWaa2 for more information.

==

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

http://www.geo-solutions.it
http://twitter.com/geosolutions_it


On Thu, Sep 4, 2014 at 11:06 AM, Jan Peters <petersjan@anonymised.com.131…> wrote:

Well, the double nested Literals is what QGis created automatically.

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).

Cheers
Andrea

==

GeoServer Professional Services from the experts! Visit
http://goo.gl/NWWaa2 for more information.

==

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

http://www.geo-solutions.it
http://twitter.com/geosolutions_it


Looking at your style, there are still some - signs in the wrong places

Cheers
Andrea

···

On Thu, Sep 4, 2014 at 11:26 AM, Jan Peters <petersjan@anonymised.com> wrote:

Ah, this cannot work, or course:

SELECT
“pk”,
“percentage_change”,
encode(
ST_AsBinary (ST_Force_2D(“the_geom”)),
‘base64’
) AS “the_geom”
FROM
“public”.“trnsfrm_meta_outputmap_jan”
WHERE
(
“the_geom” && ST_GeomFromText (
‘POLYGON ((3972989.8359375 3248544.234375, 3972989.8359375 3270607.265625, 3980258.6640625 3270607.265625, 3980258.6640625 3248544.234375, 3972989.8359375 3248544.234375))’,
3035
)
AND (
(
“percentage_change” > - 0.828977
AND “percentage_change” <= - 0.463182
)
OR (
“percentage_change” > - 0.463182
AND “percentage_change” <= ‘-’
)
OR (
“percentage_change” > - 0.0973864
AND “percentage_change” <= 0.268409
)
OR (
“percentage_change” > 0.268409
AND “percentage_change” <= 0.634205
)
OR (
“percentage_change” > 0.634205
AND “percentage_change” <= 1.0
)
)
)

Gesendet: Donnerstag, 04. September 2014 um 11:18 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: Re: [Geoserver-users] SLD styling for negative values

Jan, could you please keep the mailing list cc’ed?
About the error, try enabling “verbose logging” and then
see what the sql query being generated is.

Cheers
Andrea

==

GeoServer Professional Services from the experts! Visit
http://goo.gl/NWWaa2 for more information.

==

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

http://www.geo-solutions.it
http://twitter.com/geosolutions_it


On Thu, Sep 4, 2014 at 11:16 AM, Jan Peters <petersjan@anonymised.com.131…> wrote:

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 percentage_change -0.828977

</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

==

GeoServer Professional Services from the experts! Visit
http://goo.gl/NWWaa2 for more information.

==

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

http://www.geo-solutions.it
http://twitter.com/geosolutions_it


On Thu, Sep 4, 2014 at 11:06 AM, Jan Peters <petersjan@anonymised.com.131…> wrote:

Well, the double nested Literals is what QGis created automatically.

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).

Cheers
Andrea

==

GeoServer Professional Services from the experts! Visit
http://goo.gl/NWWaa2 for more information.

==

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

http://www.geo-solutions.it
http://twitter.com/geosolutions_it


Ok, Andrea, I fixed the respective parts and now it works. So conclusio is:

  1. use: ogc:Literal-0.828977</ogc:Literal> for your negatives, not double nested
  2. turn on verbose logging in the Geoserver interface (Settings → Global) if you have any similar problems

Thanks again
Jan

···

On Thu, Sep 4, 2014 at 11:26 AM, Jan Peters <petersjan@anonymised.com.> wrote:

Ah, this cannot work, or course:

SELECT
“pk”,
“percentage_change”,
encode(
ST_AsBinary (ST_Force_2D(“the_geom”)),
‘base64’
) AS “the_geom”
FROM
“public”.“trnsfrm_meta_outputmap_jan”
WHERE
(
“the_geom” && ST_GeomFromText (
‘POLYGON ((3972989.8359375 3248544.234375, 3972989.8359375 3270607.265625, 3980258.6640625 3270607.265625, 3980258.6640625 3248544.234375, 3972989.8359375 3248544.234375))’,
3035
)
AND (
(
“percentage_change” > - 0.828977
AND “percentage_change” <= - 0.463182
)
OR (
“percentage_change” > - 0.463182
AND “percentage_change” <= ‘-’
)
OR (
“percentage_change” > - 0.0973864
AND “percentage_change” <= 0.268409
)
OR (
“percentage_change” > 0.268409
AND “percentage_change” <= 0.634205
)
OR (
“percentage_change” > 0.634205
AND “percentage_change” <= 1.0
)
)
)

Gesendet: Donnerstag, 04. September 2014 um 11:18 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: Re: [Geoserver-users] SLD styling for negative values

Jan, could you please keep the mailing list cc’ed?
About the error, try enabling “verbose logging” and then
see what the sql query being generated is.

Cheers
Andrea

==

GeoServer Professional Services from the experts! Visit
http://goo.gl/NWWaa2 for more information.

==

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

http://www.geo-solutions.it
http://twitter.com/geosolutions_it


On Thu, Sep 4, 2014 at 11:16 AM, Jan Peters <petersjan@anonymised.com.131…> wrote:

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 percentage_change -0.828977

</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

==

GeoServer Professional Services from the experts! Visit
http://goo.gl/NWWaa2 for more information.

==

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

http://www.geo-solutions.it
http://twitter.com/geosolutions_it


On Thu, Sep 4, 2014 at 11:06 AM, Jan Peters <petersjan@anonymised.com.131…> wrote:

Well, the double nested Literals is what QGis created automatically.

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).

Cheers
Andrea

==

GeoServer Professional Services from the experts! Visit
http://goo.gl/NWWaa2 for more information.

==

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

http://www.geo-solutions.it
http://twitter.com/geosolutions_it