Thanks Roy!
This would a be possible solution -but from my point of view a workaround.
The reason of defining a "general" BBOX Filter is a single request and a
single response for that. I don't want to have a lot of server roundtrip to
query each layer separate.
Is there an other way to use the gt-wfs module to create a query like that.
There is no reason to have a dataStore because the client is not enabled for
editig features. What I'd expect is a simple featureCollection that
repesents the resullt of the query with the given URL (see below).
Any hints?
Frank
2010/10/25 Roy Braam <[email protected]>
> Hello Frank,
>
> When using the FilterFactory you are creating a filter and that's not the
> same as the param BBOX. See the ogc wfs specs 1.1.0 chapter 14.3.3.
>
> If you like to query with a bbox filter then you have to specify the
> geometry attribute name.
> So you can do something like this: (i added the code in you code snippet)
>
> for(String typeName; typeNames){
> SimpleFeatureType type=dataStore.getSchema(typeName);
> String geomName=type.getGeometryDescriptor().getLocalName();
>
> BBOX bbox = filterFactory.bbox(geomName, 13.35, 52.43, 13.45, 52.53,
> "4326"); //$NON-NLS-1$
>
> FeatureSource<SimpleFeatureType, SimpleFeature> view =
> dataStore.getView(new DefaultQuery(null, bbox));
> FeatureCollection<SimpleFeatureType, SimpleFeature> features =
> view.getFeatures();
>
> Iterator<SimpleFeature> iterator = features.iterator();
>
> while (iterator != null && iterator.hasNext()) {
> SimpleFeature next = iterator.next();
> SimpleFeatureType type = next.getType();
> System.out.println(type.getTypeName() + "\n\t" +
> next.getDefaultGeometry());
> }
> }
>
> I didn't tested it but it must be something like this.
>
> Roy
>
> ------------------------------
> *From:* Frank Gasdorf [mailto:[email protected]]
> *To:* [email protected],
> [email protected],
> [email protected]
> *Sent:* Mon, 25 Oct 2010 13:34:59 +0200
> *Subject:* [Geotools-devel] How to create BBOX Filter with FilterFactory2
>
>
> Hallo gt- and gs- developers,
>
> Sorry for cross posting!
>
> I'm using geoserver 2.x (means 2.0.x and 2.1-beta2) and try to connect with
> geotools gt-wfs client to query features from different types with a bbox
> filter. This should be an alternative way to the WMS getFeature requests.
>
> I defined a query using the DEMO request on the geoserver home, the URL
> request looks like this:
>
>
> http://localhost:8080/geoserver/wfs?request=GetFeature&version=1.1.0&typeName=naturalEarth:ne-10m-populated-places,naturalEarth:ne-10m-admin-0-countries&BBOX=-75.102613,40.212597,-72.361859,41.512517,EPSG:4326
>
> Note: the value for typeName parameter is a comma separated list of feature
> type names. The result I got for this request is what I expected : features
> are returned from more than one feature type.
>
> Now I'd like to query using the filterFactory2.bbox method to define the
> filter. How can I create a request like described before with the GT API?
> The bbox method expects an expression or a string for geometry attribute
> name. How can I gain it with GT API?
>
> Any suggestions?
>
> Thanks a lot,
> Frank
>
> code snippet:
>
> Map<String, String> connectionParameters = new HashMap<String,
> String>();
> connectionParameters.put(
> "WFSDataStoreFactory:GET_CAPABILITIES_URL", connectionURL);
> //$NON-NLS-1$
> DataStore dataStore =
> DataStoreFinder.getDataStore(connectionParameters);
>
> String[] typeNames = dataStore.getTypeNames();
> FilterFactory2 filterFactory = CommonFactoryFinder
> .getFilterFactory2(GeoTools.getDefaultHints());
> // berlin 13.40 52.48
> String nullString = null;
> BBOX bbox = filterFactory.bbox(nullString, 13.35, 52.43, 13.45,
> 52.53, "4326"); //$NON-NLS-1$
> FeatureSource<SimpleFeatureType, SimpleFeature> view =
> dataStore.getView(new DefaultQuery(null, bbox));
> FeatureCollection<SimpleFeatureType, SimpleFeature> features =
> view.getFeatures();
>
> Iterator<SimpleFeature> iterator = features.iterator();
>
> while (iterator != null && iterator.hasNext()) {
> SimpleFeature next = iterator.next();
> SimpleFeatureType type = next.getType();
> System.out.println(type.getTypeName() + "\n\t" +
> next.getDefaultGeometry());
> }
>
>
------------------------------------------------------------------------------
Nokia and AT&T present the 2010 Calling All Innovators-North America contest
Create new apps & games for the Nokia N8 for consumers in U.S. and Canada
$10 million total in prizes - $4M cash, 500 devices, nearly $6M in marketing
Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store
http://p.sf.net/sfu/nokia-dev2dev
_______________________________________________
Geotools-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-devel