hi Brett,
Unfortunately there are a number of ways to parse and encode filters in
geotools. The class if found is somewhat deprecated. The method
Geoserver uses is to use classes located in the xsd-filter module. Here
is a little test program that will parse the filter you supplied:
import java.io.ByteArrayInputStream;
import java.io.IOException;
import org.geotools.filter.v1_1.OGCConfiguration;
import org.geotools.xml.Parser;
import org.opengis.filter.Filter;
public class Test {
public static void main(String[] args) throws Exception {
OGCConfiguration ogc = new OGCConfiguration();
Parser parser = new Parser( ogc );
String xml =
"<Filter xmlns:gml=\"http://www.opengis.net/gml\">" +
"<BBOX>" +
"<PropertyName>Geometry</PropertyName>" +
"<gml:Envelope>" +
"<gml:lowerCorner>0 0</gml:lowerCorner>" +
"<gml:upperCorner>10 10</gml:upperCorner>" +
"</gml:Envelope>" +
"</BBOX>" +
"</Filter>";
Filter f = (Filter) parser.parse( new ByteArrayInputStream(
xml.getBytes()));
System.out.println(f);
}
}
Hope that helps.
-Justin
Levasseur, Brett wrote:
> Hello,
>
>
>
> I am new to GeoTools and I have a question about the use of the
> gml:Envelope tag. I have a project where I am going to have to take in
> xml documents that will include OGC Filter statements. I downloaded a
> source copy of GeoTools version 2.5.1 and started to look at the code. I
> wanted to see how the xml version of the filter was handled in GeoTools,
> after some looking I found the test class
> modules/library/xml/src/test/java/org/geotools/xml/ogc/XMLEncoderTest.java.
> This test class apparently takes in filter statements in xml and tries
> to parse them into an org.opengis.filter.Filter object. I ran the JUnit
> test and of course everything passed. I then decided that I wanted to
> try some filter statements other than the ones used in the test. So I
> went to the file
> modules/library/xml/src/test/resources/org/geotools/xml/ogc/test-data/test3b.xml.
>
> This is one of the xml files that gets read in and parsed from xml to
> the Filter object, I decided to change it into a different filter
> statement to see how the filter object would look when using a
> gml:Envelope tag. I changed this xml file to the following:
>
>
>
> <Filter xmlns:gml="http://www.opengis.net/gml">
>
> <BBOX>
>
> <PropertyName>Geometry</PropertyName>
>
> <gml:Envelope>
>
> <gml:lowerCorner>0
> 0</gml:lowerCorner>
>
> <gml:upperCorner>10
> 10</gml:upperCorner>
>
> </gml:Envelope>
>
> </BBOX>
>
> </Filter>
>
>
>
> I then ran the JUnit test again. The test that uses the file test3b.xml
> does not make any assertion statements to check and see what the outcome
> of the Filter is, so I thought that my test would still pass. Instead I
> got the following error while parsing the xml into the Filter object:
>
>
>
> java.lang.NullPointerException
>
> at
> org.geotools.filter.FilterFactoryImpl.bbox(FilterFactoryImpl.java:261)
>
> at
> org.geotools.filter.FilterDOMParser.parseFilter(FilterDOMParser.java:453)
>
> at
> org.geotools.xml.ogc.XMLEncoderTest.parseDocument(XMLEncoderTest.java:238)
>
> at
> org.geotools.xml.ogc.XMLEncoderTest.test3b(XMLEncoderTest.java:139)
>
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)
>
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>
> at java.lang.reflect.Method.invoke(Method.java:585)
>
> at junit.framework.TestCase.runTest(TestCase.java:168)
>
> at junit.framework.TestCase.runBare(TestCase.java:134)
>
> at junit.framework.TestResult$1.protect(TestResult.java:110)
>
> at
> junit.framework.TestResult.runProtected(TestResult.java:128)
>
> at junit.framework.TestResult.run(TestResult.java:113)
>
> at junit.framework.TestCase.run(TestCase.java:124)
>
> at junit.framework.TestSuite.runTest(TestSuite.java:232)
>
> at junit.framework.TestSuite.run(TestSuite.java:227)
>
> at
> org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:81)
>
> at
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
>
> at
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
>
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
>
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
>
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
>
>
>
> I tried to debug the error and found that in the method
> org.geotools.filter.FilterDOMParser.parseFilter the code cannot parse
> the gml:Envelope tag to determine what the values for the bounding box are.
>
>
>
> Does GeoTools not support all of the gml language such as gml:Envelope
> tags, or is my filter statement written incorrectly for using the
> gml:Envelope tag, or is it that the class
> modules/library/xml/src/test/java/org/geotools/xml/ogc/XMLEncoderTest.java
> is not the correct JUnit class to handle parsing xml messages with
> gml:Envelope tags to Filter objects, or is there something else I am
> missing? Thank you.
>
>
>
> Brett
>
>
> ------------------------------------------------------------------------
>
> ------------------------------------------------------------------------------
> Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are
> powering Web 2.0 with engaging, cross-platform capabilities. Quickly and
> easily build your RIAs with Flex Builder, the Eclipse(TM)based development
> software that enables intelligent coding and step-through debugging.
> Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Geotools-gt2-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users
--
Justin Deoliveira
OpenGeo - http://opengeo.org
Enterprise support for open source geospatial.
------------------------------------------------------------------------------
_______________________________________________
Geotools-gt2-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users