One of the features I used to like about uDig was being able to set a layers projection if the layer does not have a projection (or if the projection is wrong). However this no longer works.

To reproduce:

1.  Load a shapefile without a .prj file.
2.  Set the layers projection.
3. Set the map projection to be the same as the layer projection & zoom to your layer. This works and displays the layer.
4.  Set the map projection to something else.  The layer no longer renders.

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

Reply via email to