Thanking discussion to the bug report; I have applied a fix and would like to ask you to test when you are back at work.
-- Jody Garnett On Saturday, 24 September 2011 at 3:56 PM, Jody Garnett wrote: > Back from foss4g now so I can focus on this one. Thanks for the > http://jira.codehaus.org/browse/UDIG-1818 bug report. > > Sorry for the earlier confused response BasicFeatureRenderer is our code and > we should be able to fix this. Both the old and the new code snippet are > using the retired DefaultMapLayer. I would like to make sure we use > FeatureLayer and avoid a round of indirection. > > Here is my problem with the old code - ForceCoordinateSystemFeatureResults is > basically us not trusting the FeatureCollection provided by the datastore; > and wrapping it up in something we know will know will copy all the values; > and package them up into a new feature with the "Correct" CRS. > > The problem is we lose the ability of make fast queries as we pan and zoom > around! Resulting in a much much slower application. > > So could we try the following: > a) update the code to use FeatureLayer > b) sort out what DataStore implementations are giving us problems (it sounds > like Shapefile?). > c) For each datastore that is not working we can fix the GeoTools code. > Example: Internally to shapefile we can have it wrap the returned (smaller) > result with ForceCoordinateSystemFeatureResults as it pans around the screen. > > It also looks like the second code has a trouble; there are two methods we > can use when defining a Query > (http://docs.geotools.org/latest/userguide/library/api/datastore.html#simplefeaturesource): > > Override this value in the event the datasource is incorrect and your user > knows the correct CoordianteReferenceSystem. > > Query.getCoordinateSystem() > Query.setCoordinateSystem(CoordinateReferenceSystem) > > > Used to transform the information to requested CoordinateReferenceSystem. > > Query.getCoordinateSystemReproject() > Query.setCoordinateSystemReproject(CoordinateReferenceSystem) > > > With that in mind the second code example looks correct; it uses > setCoordianteReferenceSystem correctly. It is just the implementation of the > datastore that is wrong? > > -- > Jody Garnett > > > On Friday, 16 September 2011 at 9:26 AM, Emily Gouge wrote: > > > I did some digging and found in the BasicFeatureRenderer these lines > > (from the prepareDraw) function were commented out: > > > > FeatureCollection<SimpleFeatureType, SimpleFeature> reprojectingFc = new > > ForceCoordinateSystemFeatureResults(featureSource.getFeatures(), > > layer.getCRS()); > > layers[0] = new DefaultMapLayer(reprojectingFc, style, "Test"); > > > > and replaced with this: > > > > layers[0] = new DefaultMapLayer(featureSource, style, "Test"); > > DefaultQuery query = new DefaultQuery(Query.ALL); > > query.setTypeName(featureSource.getSchema().getTypeName()); > > query.setCoordinateSystem(layerCRS); > > layers[0].setQuery(query); > > > > If I un-do this change then the layer renders fine. > > > > I think there are multiple issues with this "new" code: > > 1) The layers[0].setQuery is called here, however it is also called > > later in the execution process in the setQueries() function. So first > > query which is supposed to set the CRS is over-written and not used when > > rendering. > > > > 2) Geotools ignores the CoordinateSystem of the layer passed in the > > layer. Even when I fixed the problem outlined in (1), the issues was > > not resolved. I looked a bit into the geotools StreamingRenderer and it > > didn't look to me like it used the CRS of the query, however I am not > > familiar enough with this code to pinpoint the issue (if there even is one). > > > > > > I'm wondering if anyone knows what prompted this change in the rendering > > process and if it can be reverted back or made to work so projections > > can be set on layers. > > > > Thanks, > > Emily
_______________________________________________ User-friendly Desktop Internet GIS (uDig) http://udig.refractions.net http://lists.refractions.net/mailman/listinfo/udig-devel
