Ok , I guess I will use tables only.

thanks aaime.


Andrea Aime a écrit :
> johann sorel ha scritto:
>> Here is a test case :
>>
>> CREATE TABLE places
>> (
>>  ref_id character(8) NOT NULL,
>>  emplacement geometry,
>>  CONSTRAINT "mainKey" PRIMARY KEY (ref_id)
>> )
>> WITH (OIDS=FALSE);
>> ALTER TABLE places OWNER TO admin;
>>
>> //dont forget to add the column in the geometry_columns
>>
>> insert into places values('SCR08123', GeometryFromText('POINT(1 
>> 3)',4326));
>>
>> CREATE OR REPLACE VIEW myview AS
>> SELECT places.ref_id, places.emplacement
>>   FROM places;
>>
>> ALTER TABLE myview OWNER TO admin;
>>
>>
>>        final Map params = new HashMap<String, Object>();
>>        params.put("dbtype", "postgis");
>>        params.put(PostgisDataStoreFactory.HOST.key, "...");
>>        params.put(PostgisDataStoreFactory.PORT.key, 5432);
>>        params.put(PostgisDataStoreFactory.SCHEMA.key, "public");
>>        params.put(PostgisDataStoreFactory.DATABASE.key, "...");
>>        params.put(PostgisDataStoreFactory.USER.key, "...");
>>        params.put(PostgisDataStoreFactory.PASSWD.key, "...");
>>              DataStore store = DataStoreFinder.getDataStore(params);
>>                      FeatureSource fs = 
>> store.getFeatureSource("myview");
>>        fs.getBounds();    //RAISE ERROR
>>
>> First try to connect to the Table, it works
>> Next try to connect to the view and you will have a :
>> Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
>>        at com.vividsolutions.jts.geom.Envelope.init(Envelope.java:254)
>>        at com.vividsolutions.jts.geom.Envelope.<init>(Envelope.java:186)
>>        at 
>> org.geotools.geometry.jts.ReferencedEnvelope.<init>(ReferencedEnvelope.java:203)
>>  
>
>
> Hum, I run the above code and fs.getBounds() does not raise an
> error, it return null instead. Are you trying to build a referenced
> envelope out of it in your code?
> Mind that if you do, you have to deal with null values, 
> FeatureSource.getBounds() javadoc says that the method can return null
> if there is no optimized way to compute the bounds.
> What we do in GeoServer is that when that happens, we fall back
> on an explicity computation by scanning manually all the features
> (which might be very expensive, but in our use case, acceptable
> since it's a one time operation, then the bounds get cached).
> Also mind that computing the bounds can literally take minutes
> even using the optimized methods, I have a table with 20 million
> roads where the optimized getBounds() runs for 2 minutes straight
> before returning a result.
>
> Anyways, you're right that getBounds() fails for a view, there is
> a design problem in the postgis data store. In practice, postgis
> ds does not have a stand alone FeatureSource, only a FeatureStore
> has been coded. When the primary key is missing (as in a view)
> a plain JDBCFeatureSource is returned, that knows nothing of
> postgis specifics, and that one always return null to getBounds().
> If you add the oid column the datastore will think you're using
> a old postgres with oid support, assume that one can be treated
> as a primary key, and return an optimized PostgisFeatureStore
> instead.
>
> Fixing this would require major surgery, that time is better
> spent porting the postgis data store to the new jdbc architecture
> instead. I've created a jira issue so that this kind of
> test will be added to the jdbc-ng standard test suite:
> http://jira.codehaus.org/browse/GEOT-2067
>
> Cheers
> Andrea
>

-- 
Johann Sorel

Company - Geomatys GIS Developer
Mail - [EMAIL PROTECTED]


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Geotools-devel mailing list
Geotools-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geotools-devel

Reply via email to