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
