Hi Andrea:
I am trying to use the filter parameter with the 1.4.0 Geoserver
release from today. It works for me with shapefiles (yay!), but not
with a Postgis datastore. The SQL query, however, is built properly
(it includes my filter) and it works when executed via the psql
client.
Any ideas as to what I am doing wrong? The relevant console output I get is:
586533 [FINE] org.vfny.geoserver.servlets.AbstractService - reading
request: bbox=-130,24,-66,50&styles=polygon&Format=image/png&request=GetMap&layers=countries&width=550&height=250&srs=EPSG:4326&filter=(%3CFilter%3E%3CPropertyIsEqualTo%3E%3CPropertyName%3Ecountry%3C/PropertyName%3E%3CLiteral%3EUSA%3C/Literal%3E%3C/PropertyIsEqualTo%3E%3C/Filter%3E)
586534 [FINE] org.vfny.geoserver.global.Data - getting type countries
586534 [FINE] org.geotools.data.postgis.PostgisDataStore - get Feature
source called on countries
586535 [FINE] org.geotools.data.postgis.PostgisDataStore - returning
pg feature locking
586536 [FINE] org.geotools.styling.StyleImpl - number of fts set 1
586537 [FINE] org.vfny.geoserver.wms.requests.GetMapKvpReader -
establishing polygon style for topp:countries
586540 [FINE] org.vfny.geoserver.util.requests.readers.WfsXmlRequestReader
- just parsed: org.xml.sax.InputSource@anonymised.com
586541 [FINE] org.vfny.geoserver.util.requests.readers.WfsXmlRequestReader
- passing filter: [ country = USA ]
586541 [INFO] org.vfny.geoserver.servlets.AbstractService - handling
request: org.vfny.geoserver.wms.requests.GetMapRequest@anonymised.com
586542 [FINE] org.vfny.geoserver.servlets.AbstractService - strategy
is: PARTIAL-BUFFER
586544 [FINE] org.vfny.geoserver.wms.responses.GetMapResponse - setting up map
586544 [FINE] org.geotools.data.postgis.PostgisDataStore - get Feature
source called on countries
586544 [FINE] org.geotools.data.postgis.PostgisDataStore - returning
pg feature locking
586545 [FINE] org.vfny.geoserver.wms.responses.DefaultRasterMapProducer
- setting up 550x250 image
586548 [FINE] org.geotools.renderer.lite.StreamingRenderer - Affine
Transform is AffineTransform[[8.59375, 0.0, 1117.1875], [0.0,
-9.615384615384613, 480.7692307692308]]
586549 [FINE] org.geotools.styling.StyleImpl - number of fts set 1
586549 [FINE] org.geotools.renderer.lite.StreamingRenderer -
processing 1 stylers for countries
586549 [FINE] org.geotools.renderer.lite.StreamingRenderer - creating
rules for scale denominator- 3.612619251837895E7
586550 [FINE] org.geotools.data.jdbc.JDBC1DataStore - calling sql
builder with filter [[ country = USA ] AND [ geom bbox POLYGON ((-130
23.999999999999996, -130 50, -66 50, -66 23.999999999999996, -130
23.999999999999996)) ]]
586551 [FINE] org.geotools.data.jdbc.JDBC1DataStore - sql is SELECT
"key", encode(AsBinary(force_2d("geom"), 'XDR'),'base64'), "country"
FROM "public"."countries" WHERE ("country" = 'USA' AND "geom" &&
GeometryFromText('POLYGON ((-130 23.999999999999996, -130 50, -66 50,
-66 23.999999999999996, -130 23.999999999999996))', 4326))
586551 [FINE] org.geotools.data.jdbc.JDBC1DataStore - About to execute
query: SELECT "key", encode(AsBinary(force_2d("geom"),
'XDR'),'base64'), "country" FROM "public"."countries" WHERE ("country"
= 'USA' AND "geom" && GeometryFromText('POLYGON ((-130
23.999999999999996, -130 50, -66 50, -66 23.999999999999996, -130
23.999999999999996))', 4326))
586552 [FINE] org.geotools.data.jdbc.ConnectionPool - Getting
available connection.
600693 [SEVERE] org.geotools.renderer.lite.StreamingRenderer -
Exception occurrend during rendering
java.lang.IllegalArgumentException: FeatureReader allready produces
contents with the correct schema
at org.geotools.data.ReTypeFeatureReader.typeAttributes(ReTypeFeatureReader.java:88)
at org.geotools.data.ReTypeFeatureReader.<init>(ReTypeFeatureReader.java:68)
at org.geotools.data.jdbc.JDBC1DataStore.getFeatureReader(JDBC1DataStore.java:699)
at org.geotools.data.jdbc.JDBCFeatureCollection.reader(JDBCFeatureCollection.java:78)
at org.geotools.renderer.lite.StreamingRenderer.getReader(StreamingRenderer.java:1258)
at org.geotools.renderer.lite.StreamingRenderer.processStylers(StreamingRenderer.java:1356)
at org.geotools.renderer.lite.StreamingRenderer.paint(StreamingRenderer.java:513)
at org.geotools.renderer.lite.StreamingRenderer.paint(StreamingRenderer.java:396)
at org.vfny.geoserver.wms.responses.DefaultRasterMapProducer.produceMap(DefaultRasterMapProducer.java:239)
at org.vfny.geoserver.wms.responses.GetMapResponse.execute(GetMapResponse.java:208)
at org.vfny.geoserver.servlets.AbstractService.doService(AbstractService.java:528)
at org.vfny.geoserver.servlets.AbstractService.doGet(AbstractService.java:333)
at org.geoserver.request.Dispatcher.dispatch(Dispatcher.java:183)
at org.geoserver.request.Dispatcher.handleRequestInternal(Dispatcher.java:58)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:139)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:44)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:684)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:625)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:392)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:347)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:445)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1050)
at org.vfny.geoserver.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:122)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1041)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:354)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:226)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:627)
at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:149)
at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:123)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:141)
at org.mortbay.jetty.Server.handle(Server.java:269)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:430)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:687)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:492)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:199)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:339)
at org.mortbay.jetty.nio.HttpChannelEndPoint.run(HttpChannelEndPoint.java:270)
at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)
600694 [SEVERE]
org.geotools.renderer.lite.StreamingRenderer$DefaultRenderListener -
Exception rendering layer DefaultMapLayer[ UNNAMED, VISIBLE,
style=StyleImpl<NO_PARENT>[ name=polygon],
data=org.vfny.geoserver.global.GeoServerFeatureLocking@anonymised.com,
query=Query:
feature type: countries
filter: [ country = USA ]
[properties: ALL ]]
java.lang.Exception: Exception rendering layer DefaultMapLayer[
UNNAMED, VISIBLE, style=StyleImpl<NO_PARENT>[ name=polygon],
data=org.vfny.geoserver.global.GeoServerFeatureLocking@anonymised.com,
query=Query:
feature type: countries
filter: [ country = USA ]
[properties: ALL ]]
at org.geotools.renderer.lite.StreamingRenderer.paint(StreamingRenderer.java:516)
at org.geotools.renderer.lite.StreamingRenderer.paint(StreamingRenderer.java:396)
at org.vfny.geoserver.wms.responses.DefaultRasterMapProducer.produceMap(DefaultRasterMapProducer.java:239)
at org.vfny.geoserver.wms.responses.GetMapResponse.execute(GetMapResponse.java:208)
at org.vfny.geoserver.servlets.AbstractService.doService(AbstractService.java:528)
at org.vfny.geoserver.servlets.AbstractService.doGet(AbstractService.java:333)
at org.geoserver.request.Dispatcher.dispatch(Dispatcher.java:183)
at org.geoserver.request.Dispatcher.handleRequestInternal(Dispatcher.java:58)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:139)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:44)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:684)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:625)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:392)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:347)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:445)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1050)
at org.vfny.geoserver.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:122)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1041)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:354)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:226)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:627)
at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:149)
at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:123)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:141)
at org.mortbay.jetty.Server.handle(Server.java:269)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:430)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:687)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:492)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:199)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:339)
at org.mortbay.jetty.nio.HttpChannelEndPoint.run(HttpChannelEndPoint.java:270)
at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)
Caused by: java.lang.IllegalArgumentException: FeatureReader allready
produces contents with the correct schema
at org.geotools.data.ReTypeFeatureReader.typeAttributes(ReTypeFeatureReader.java:88)
at org.geotools.data.ReTypeFeatureReader.<init>(ReTypeFeatureReader.java:68)
at org.geotools.data.jdbc.JDBC1DataStore.getFeatureReader(JDBC1DataStore.java:699)
at org.geotools.data.jdbc.JDBCFeatureCollection.reader(JDBCFeatureCollection.java:78)
at org.geotools.renderer.lite.StreamingRenderer.getReader(StreamingRenderer.java:1258)
at org.geotools.renderer.lite.StreamingRenderer.processStylers(StreamingRenderer.java:1356)
at org.geotools.renderer.lite.StreamingRenderer.paint(StreamingRenderer.java:513)
... 33 more
600695 [FINE] org.geotools.renderer.lite.StreamingRenderer - Style
cache hit ratio: NaN , hits 0, requests 0
600695 [FINE] org.vfny.geoserver.servlets.AbstractService - mime type
is: image/png
600724 [INFO] org.vfny.geoserver.servlets.AbstractService - Service handled
===========================================
The wms getMap request is:
http://localhost:8080/geoserver/wms?bbox=-130,24,-66,50&styles=polygon&Format=image/png&request=GetMap&layers=countries&width=550&height=250&srs=EPSG:4326&filter=(<Filter><PropertyIsEqualTo><PropertyName>country</PropertyName><Literal>USA</Literal></PropertyIsEqualTo></Filter>)
Thanks for any help,
Alex