Hi Frank,

Yep it's a work around for if you want to use the BBOX param.... Hmmmzzz, 
actually I never used the BBOX param with geotools... It can only be used with 
a http-get command... I don't think it's supported in the WFS module.... Maybe 
someone else knows something about it?

Met vriendelijke groet,

Roy Braam
B3partners BV
030 214 2082

  _____  

From: Frank Gasdorf [mailto:[email protected]]
To: Roy Braam [mailto:[email protected]], 
[email protected]
Sent: Mon, 25 Oct 2010 17:40:07 +0200
Subject: Re: [Geotools-devel] How to create BBOX Filter with FilterFactory2

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

Reply via email to