Thanks a lot. This works fine !!!
But I didn't use any MathTransfrom. Actually, I picked 2 points :
Coordinate world = getContext().pixelToWorld(e.x-1, e.y-1);
Coordinate world2 = getContext().pixelToWorld(e.x+1, e.y+1);
and created to envelope :
Envelope env = new Envelope(world, world2);
and the selection worked fine.
My second question why do we have to do any operation with Mathtransform as
getContext().pixelToWorld(...) do the transformation.
Dis I miss something ?
Rodolphe
2009/4/7 Jody Garnett <[email protected]>
> Good afternoon.
>
> In your code example you are making a very small envelope (ie
> rectangle) with 0 width and 0 height. The BBOX filter defined by the
> OGC Filter specification is not really going to find anything inside
> this small rectangle.
>
> I usually try and make a rectangle the size of 2 pixels.
>
> Also note that source.getFeatures() returns everything; you want to
> use source.getFeatures( filter ) to process your query.
>
> Jody
>
> On Tue, Apr 7, 2009 at 1:38 AM, Rodolphe QUEMERAIS
> <[email protected]> wrote:
> > Hi all,
> > I'm starting to study uDig possibilities and achieve to do manythings now
> > (create new layer, add features to a layer,...) programatically. My next
> > step is to edit a feature after selected it on screen but I'm unable to
> > select one.
> > I've tested the PickTool code from uDig examples but got no result.
> > I've traced results with some println.. The coordinates are good, and I
> do
> > have the number of features count but nothing is selected.
> >
> > This is the code taken from uDig examples and the println I added to see
> if
> > datas are ok.
> > Help would be welcome.
> >
> > @Override
> > protected void onMouseReleased( MapMouseEvent e ) {
> > try{
> >
> > // convert the mouse click into map coordinates. This is
> > the
> > // CRS obtained from the ViewportModel
> > Coordinate world = getContext().pixelToWorld(e.x, e.y);
> >
> > // now we must transform the coordinate to the CRS of the
> > layer
> > ILayer layer = getContext().getSelectedLayer();
> > MathTransform tranform = layer.mapToLayerTransform();
> >
> > double[] from=new double[]{world.x, world.y};
> > double[] to = new double[2];
> > tranform.transform(from, 0, to, 0, 1);
> > //I check if coordinates are ok
> > System.out.println(to[0]);
> > System.out.println(to[1]);
> > // Construct a envelope from the transformed coordinate
> > Envelope env = new Envelope(new Coordinate(to[0],to[1]));
> >
> > // Query the feature source to get the features that
> > intersect with that coordinate
> > FeatureSource source =
> > layer.getResource(FeatureSource.class, ProgressManager.instance().get());
> > FeatureCollection featuresFiltre =
> > source.getFeatures(layer.createBBoxFilter(env,
> > ProgressManager.instance().get()));
> > FeatureCollection features = source.getFeatures();
> > //show the number of features on the layer and the selected features
> > System.out.println("Selected features on Layer : "+features.size());
> > System.out.println("Selected features : "+featuresFiltre.size());
> > // do something smart, notify user probably.
> > } catch (Throwable t) {
> > System.out.println("Nothing !!!");
> > }
> >
> >
> >
> > _______________________________________________
> > User-friendly Desktop Internet GIS (uDig)
> > http://udig.refractions.net
> > http://lists.refractions.net/mailman/listinfo/udig-devel
> >
> >
> _______________________________________________
> User-friendly Desktop Internet GIS (uDig)
> http://udig.refractions.net
> http://lists.refractions.net/mailman/listinfo/udig-devel
>
_______________________________________________
User-friendly Desktop Internet GIS (uDig)
http://udig.refractions.net
http://lists.refractions.net/mailman/listinfo/udig-devel