[Geoserver-devel] More questions about GetFeature

I've tried this:

http://localhost:8080/geoserver/wfs?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&OUTPUTFORMAT=GML2&TYPENAME=fire:fire&FILTER=<ogc:Filter%20xmlns:wfs="http://www.opengis.net/wfs"%20xmlns:ogc="http://www.opengis.net/ogc"%20xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"%20xsi:schemaLocation="http://www.opengis.net/wfs%20\.\./wfs/1\.0\.0/WFS\-basic\.xsd"><ogc:PropertyIsBetween><ogc:PropertyName>fire:COUNTY</ogc:PropertyName><ogc:LowerBoundary><ogc:Literal>Tulsa</ogc:Literal></ogc:LowerBoundary><ogc:UpperBoundary><ogc:Literal>Tulsa</ogc:Literal></ogc:UpperBoundary></ogc:PropertyIsBetween></ogc:Filter>

but I've got an exception response.

<?xml version="1.0" ?>
- <#> <ServiceExceptionReport version="*1.2.0*" xmlns="*http://www.opengis.net/ogc*&quot; xmlns:xsi="*http://www.w3.org/2001/XMLSchema-instance*&quot; xsi:schemaLocation="*http://www.opengis.net/ogc http://localhost:8080/geoserver/data/capabilities/wfs/1.0.0/OGC-exception.xsd*&quot;&gt;
  <ServiceException>UNCAUGHT EXCEPTION: java.lang.ClassCastException at org.geotools.filter.BetweenFilterImpl.contains(BetweenFilterImpl.java:83) at org.geotools.data.FilteringFeatureReader.hasNext(FilteringFeatureReader.java:119) at org.geotools.data.ReTypeFeatureReader.hasNext(ReTypeFeatureReader.java:127) at org.geotools.data.DefaultFeatureResults.getCount(DefaultFeatureResults.java:207) at org.vfny.geoserver.responses.wfs.FeatureResponse.execute(FeatureResponse.java:299) at org.vfny.geoserver.responses.wfs.FeatureResponse.execute(FeatureResponse.java:193) at org.vfny.geoserver.servlets.AbstractService.doService(AbstractService.java:280) at org.vfny.geoserver.servlets.AbstractService.doGet(AbstractService.java:195) at javax.servlet.http.HttpServlet.service(HttpServlet.java:743) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at org.vfny.geoserver.servlets.wfs.WfsDispatcher.doResponse(WfsDispatcher.java:159) at org.vfny.geoserver.servlets.wfs.WfsDispatcher.doGet(WfsDispatcher.java:112) at javax.servlet.http.HttpServlet.service(HttpServlet.java:743) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:284) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:257) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567) at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:245) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:199) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:184) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:156) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:972) at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:206) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:833) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:732) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:619) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:688) at java.lang.Thread.run(Unknown Source)</ServiceException>
  </ServiceExceptionReport>

Then I've tried the same but using a post:

<wfs:GetFeature
version="1.0.0" service="WFS" outputFormat="GML2"
xmlns:wfs="http://www.opengis.net/wfs&quot;
xmlns:ogc="http://www.opengis.net/ogc&quot;
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&quot;
xsi:schemaLocation="http://www.opengis.net/wfs ../wfs/1.0.0/WFS-basic.xsd">
<wfs:Query typeName="fire:fire">
<ogc:PropertyIsBetween>
<ogc:PropertyName>fire:COUNTY</ogc:PropertyName>
<ogc:LowerBoundary><ogc:Literal>Tulsa</ogc:Literal></ogc:LowerBoundary>
<ogc:UpperBoundary><ogc:Literal>Tulsa</ogc:Literal></ogc:UpperBoundary>
</ogc:PropertyIsBetween>
</wfs:Query>
</wfs:GetFeature>

and I've got this:

<?xml version="1.0" encoding="UTF-8"?>
<wfs:FeatureCollection xmlns:wfs="http://www.opengis.net/wfs&quot; xmlns:fire="http://picasso.dlsi.uji.es/schemas/oklahoma/fire&quot; xmlns:gml="http://www.opengis.net/gml&quot; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation="http://picasso.dlsi.uji.es/schemas/oklahoma/fire http://localhost:8080/geoserver/wfs/DescribeFeatureType?typeName=fire:fire http://www.opengis.net/wfs http://localhost:8080/geoserver/data/capabilities/wfs/1.0.0/WFS-basic.xsd&quot;&gt; <gml:boundedBy> <gml:Box srsName="http://www.opengis.net/gml/srs/epsg\.xml\#13869&quot;&gt; <gml:coordinates decimal="." cs="," ts=" ">0,0 0,-1 -1,-1 -1,0</gml:coordinates> </gml:Box> </gml:boundedBy> <gml:featureMember> <fire:fire fid="fire.1"> <fire:COUNTY>Logan</fire:COUNTY> </fire:fire> </gml:featureMember> <gml:featureMember> <fire:fire fid="fire.2"> <fire:COUNTY>Oklahoma</fire:COUNTY> </fire:fire> </gml:featureMember> <gml:featureMember> <fire:fire fid="fire.3"> <fire:COUNTY>Grady</fire:COUNTY> </fire:fire> </gml:featureMember> <gml:featureMember> <fire:fire fid="fire.4"> <fire:COUNTY>Cleveland</fire:COUNTY> </fire:fire> </gml:featureMember> <gml:featureMember> <fire:fire fid="fire.5"> <fire:COUNTY>Oklahoma</fire:COUNTY> </fire:fire> </gml:featureMember> <gml:featureMember> <fire:fire fid="fire.6"> <fire:COUNTY>Lincoln</fire:COUNTY> </fire:fire> </gml:featureMember> <gml:featureMember> <fire:fire fid="fire.7"> <fire:COUNTY>Lincoln</fire:COUNTY> </fire:fire> </gml:featureMember> <gml:featureMember> <fire:fire fid="fire.8"> <fire:COUNTY>Hughes</fire:COUNTY> </fire:fire> </gml:featureMember> <gml:featureMember> <fire:fire fid="fire.9"> <fire:COUNTY>Tulsa</fire:COUNTY> </fire:fire> </gml:featureMember> <gml:featureMember> <fire:fire fid="fire.10"> <fire:COUNTY>Wagoner</fire:COUNTY> </fire:fire> </gml:featureMember> <gml:featureMember> <fire:fire fid="fire.11"> <fire:COUNTY>Wagoner</fire:COUNTY> </fire:fire> </gml:featureMember> <gml:featureMember> <fire:fire fid="fire.12"> <fire:COUNTY>Muskogee</fire:COUNTY> </fire:fire> </gml:featureMember> <gml:featureMember> <fire:fire fid="fire.13"> <fire:COUNTY>Sequoyah</fire:COUNTY> </fire:fire> </gml:featureMember> <gml:featureMember> <fire:fire fid="fire.14"> <fire:COUNTY>Tulsa</fire:COUNTY> </fire:fire> </gml:featureMember> <gml:featureMember> <fire:fire fid="fire.15"> <fire:COUNTY>Rogers</fire:COUNTY> </fire:fire> </gml:featureMember> <gml:featureMember> <fire:fire fid="fire.16"> <fire:COUNTY>Rogers</fire:COUNTY> </fire:fire> </gml:featureMember> <gml:featureMember> <fire:fire fid="fire.17"> <fire:COUNTY>Rogers</fire:COUNTY> </fire:fire> </gml:featureMember> <gml:featureMember> <fire:fire fid="fire.18"> <fire:COUNTY>Rogers</fire:COUNTY> </fire:fire> </gml:featureMember> <gml:featureMember> <fire:fire fid="fire.19"> <fire:COUNTY>Rogers</fire:COUNTY> </fire:fire> </gml:featureMember> <gml:featureMember> <fire:fire fid="fire.20"> <fire:COUNTY>Canadian</fire:COUNTY> </fire:fire> </gml:featureMember> <gml:featureMember> <fire:fire fid="fire.21"> <fire:COUNTY>Lincoln</fire:COUNTY> </fire:fire> </gml:featureMember> <gml:featureMember> <fire:fire fid="fire.22"> <fire:COUNTY>Lincoln</fire:COUNTY> </fire:fire> </gml:featureMember></wfs:FeatureCollection>

which I think it is wrong because I've made a request to get all features that match with <fire:COUNTY>Tulsa</fire:COUNTY> and I get all the features from the database.

--
Miguel Ángel Esbrí
Dept. Information Systems
(Lenguajes y Sistemas Informáticos)
Universitat Jaume I
E-12071 Castellón, Spain
mailto:maesbri@anonymised.com
http://edugi.uji.es

Hey could you please put these as bugs on JIRA, our task tracker? It's
available at http://jira.codehaus.org/secure/BrowseProject.jspa?id=10311.
I'm about to travel, and can't look at these right now, and I may forget
about them if they're just on email. I should be able to hit them
relatively fast when I've got some time, as in the past I got everything
working with postgis. JIRA allows you to attach files, so it'd be super
helpful if you attached the shapefile used, and the request made and
response, and then put a detailed description of what went wrong (your
reports have been solid, I think there's enough info in them for me to
tackle them, just get it all in jira, and the actual shapefile used would
be helpful (if possible, I know some data may not be shareable)). I'm
sorry I can't hit them right now, but I will try to soon if you get them
up on jira. Put the last one or two that you emailed up there as well.
When you post them to jira you shouldn't need to email the list, as
opening a bug there automatically sends to the list, and also ensures that
we keep track of it.

Thanks!

Chris

On Thu, 4 Mar 2004, Miguel Ángel Esbrí wrote:

I've tried this:

http://localhost:8080/geoserver/wfs?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&OUTPUTFORMAT=GML2&TYPENAME=fire:fire&FILTER=&lt;ogc:Filter%20xmlns:wfs=&quot;http://www.opengis.net/wfs&quot;%20xmlns:ogc=&quot;http://www.opengis.net/ogc&quot;%20xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;%20xsi:schemaLocation=&quot;http://www.opengis.net/wfs%20\.\./wfs/1\.0\.0/WFS\-basic\.xsd&quot;&gt;&lt;ogc:PropertyIsBetween&gt;&lt;ogc:PropertyName&gt;fire:COUNTY&lt;/ogc:PropertyName&gt;&lt;ogc:LowerBoundary&gt;&lt;ogc:Literal&gt;Tulsa&lt;/ogc:Literal&gt;&lt;/ogc:LowerBoundary&gt;&lt;ogc:UpperBoundary&gt;&lt;ogc:Literal&gt;Tulsa&lt;/ogc:Literal&gt;&lt;/ogc:UpperBoundary&gt;&lt;/ogc:PropertyIsBetween&gt;&lt;/ogc:Filter&gt;

but I've got an exception response.

<?xml version="1.0" ?>
- <#> <ServiceExceptionReport version="*1.2.0*"
xmlns="*http://www.opengis.net/ogc*&quot;
xmlns:xsi="*http://www.w3.org/2001/XMLSchema-instance*&quot;
xsi:schemaLocation="*http://www.opengis.net/ogc
http://localhost:8080/geoserver/data/capabilities/wfs/1.0.0/OGC-exception.xsd*&quot;&gt;
  <ServiceException>UNCAUGHT EXCEPTION: java.lang.ClassCastException at
org.geotools.filter.BetweenFilterImpl.contains(BetweenFilterImpl.java:83)
at
org.geotools.data.FilteringFeatureReader.hasNext(FilteringFeatureReader.java:119)
at
org.geotools.data.ReTypeFeatureReader.hasNext(ReTypeFeatureReader.java:127)
at
org.geotools.data.DefaultFeatureResults.getCount(DefaultFeatureResults.java:207)
at
org.vfny.geoserver.responses.wfs.FeatureResponse.execute(FeatureResponse.java:299)
at
org.vfny.geoserver.responses.wfs.FeatureResponse.execute(FeatureResponse.java:193)
at
org.vfny.geoserver.servlets.AbstractService.doService(AbstractService.java:280)
at
org.vfny.geoserver.servlets.AbstractService.doGet(AbstractService.java:195)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:743) at
javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at
org.vfny.geoserver.servlets.wfs.WfsDispatcher.doResponse(WfsDispatcher.java:159)
at
org.vfny.geoserver.servlets.wfs.WfsDispatcher.doGet(WfsDispatcher.java:112)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:743) at
javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:284)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:257)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567)
at
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:245)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:199)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:184)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:156)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:972)
at
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:206)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:833)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:732)
at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:619)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:688)
at java.lang.Thread.run(Unknown Source)</ServiceException>
  </ServiceExceptionReport>

Then I've tried the same but using a post:

<wfs:GetFeature
version="1.0.0" service="WFS" outputFormat="GML2"
xmlns:wfs="http://www.opengis.net/wfs&quot;
xmlns:ogc="http://www.opengis.net/ogc&quot;
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&quot;
xsi:schemaLocation="http://www.opengis.net/wfs ../wfs/1.0.0/WFS-basic.xsd">
<wfs:Query typeName="fire:fire">
<ogc:PropertyIsBetween>
<ogc:PropertyName>fire:COUNTY</ogc:PropertyName>
<ogc:LowerBoundary><ogc:Literal>Tulsa</ogc:Literal></ogc:LowerBoundary>
<ogc:UpperBoundary><ogc:Literal>Tulsa</ogc:Literal></ogc:UpperBoundary>
</ogc:PropertyIsBetween>
</wfs:Query>
</wfs:GetFeature>

and I've got this:

<?xml version="1.0" encoding="UTF-8"?>
<wfs:FeatureCollection xmlns:wfs="http://www.opengis.net/wfs&quot;
xmlns:fire="http://picasso.dlsi.uji.es/schemas/oklahoma/fire&quot;
xmlns:gml="http://www.opengis.net/gml&quot;
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&quot;
xsi:schemaLocation="http://picasso.dlsi.uji.es/schemas/oklahoma/fire
http://localhost:8080/geoserver/wfs/DescribeFeatureType?typeName=fire:fire
http://www.opengis.net/wfs
http://localhost:8080/geoserver/data/capabilities/wfs/1.0.0/WFS-basic.xsd&quot;&gt;
<gml:boundedBy> <gml:Box
srsName="http://www.opengis.net/gml/srs/epsg.xml#13869&quot;&gt;
<gml:coordinates decimal="." cs="," ts=" ">0,0 0,-1 -1,-1
-1,0</gml:coordinates> </gml:Box> </gml:boundedBy>
<gml:featureMember> <fire:fire fid="fire.1">
<fire:COUNTY>Logan</fire:COUNTY> </fire:fire> </gml:featureMember>
<gml:featureMember> <fire:fire fid="fire.2">
<fire:COUNTY>Oklahoma</fire:COUNTY> </fire:fire>
</gml:featureMember> <gml:featureMember> <fire:fire
fid="fire.3"> <fire:COUNTY>Grady</fire:COUNTY> </fire:fire>
</gml:featureMember> <gml:featureMember> <fire:fire
fid="fire.4"> <fire:COUNTY>Cleveland</fire:COUNTY> </fire:fire>
</gml:featureMember> <gml:featureMember> <fire:fire
fid="fire.5"> <fire:COUNTY>Oklahoma</fire:COUNTY> </fire:fire>
</gml:featureMember> <gml:featureMember> <fire:fire
fid="fire.6"> <fire:COUNTY>Lincoln</fire:COUNTY> </fire:fire>
</gml:featureMember> <gml:featureMember> <fire:fire
fid="fire.7"> <fire:COUNTY>Lincoln</fire:COUNTY> </fire:fire>
</gml:featureMember> <gml:featureMember> <fire:fire
fid="fire.8"> <fire:COUNTY>Hughes</fire:COUNTY> </fire:fire>
</gml:featureMember> <gml:featureMember> <fire:fire
fid="fire.9"> <fire:COUNTY>Tulsa</fire:COUNTY> </fire:fire>
</gml:featureMember> <gml:featureMember> <fire:fire
fid="fire.10"> <fire:COUNTY>Wagoner</fire:COUNTY> </fire:fire>
</gml:featureMember> <gml:featureMember> <fire:fire
fid="fire.11"> <fire:COUNTY>Wagoner</fire:COUNTY> </fire:fire>
</gml:featureMember> <gml:featureMember> <fire:fire
fid="fire.12"> <fire:COUNTY>Muskogee</fire:COUNTY> </fire:fire>
</gml:featureMember> <gml:featureMember> <fire:fire
fid="fire.13"> <fire:COUNTY>Sequoyah</fire:COUNTY> </fire:fire>
</gml:featureMember> <gml:featureMember> <fire:fire
fid="fire.14"> <fire:COUNTY>Tulsa</fire:COUNTY> </fire:fire>
</gml:featureMember> <gml:featureMember> <fire:fire
fid="fire.15"> <fire:COUNTY>Rogers</fire:COUNTY> </fire:fire>
</gml:featureMember> <gml:featureMember> <fire:fire
fid="fire.16"> <fire:COUNTY>Rogers</fire:COUNTY> </fire:fire>
</gml:featureMember> <gml:featureMember> <fire:fire
fid="fire.17"> <fire:COUNTY>Rogers</fire:COUNTY> </fire:fire>
</gml:featureMember> <gml:featureMember> <fire:fire
fid="fire.18"> <fire:COUNTY>Rogers</fire:COUNTY> </fire:fire>
</gml:featureMember> <gml:featureMember> <fire:fire
fid="fire.19"> <fire:COUNTY>Rogers</fire:COUNTY> </fire:fire>
</gml:featureMember> <gml:featureMember> <fire:fire
fid="fire.20"> <fire:COUNTY>Canadian</fire:COUNTY> </fire:fire>
</gml:featureMember> <gml:featureMember> <fire:fire
fid="fire.21"> <fire:COUNTY>Lincoln</fire:COUNTY> </fire:fire>
</gml:featureMember> <gml:featureMember> <fire:fire
fid="fire.22"> <fire:COUNTY>Lincoln</fire:COUNTY> </fire:fire>
</gml:featureMember></wfs:FeatureCollection>

which I think it is wrong because I've made a request to get all
features that match with <fire:COUNTY>Tulsa</fire:COUNTY> and I get all
the features from the database.

--