Hi Paulo,

> Hi all.
> We are writing a short howto for the new actions. We would like to add
> some more
> complex example that the usual "open the browser with this argument",
> possibly using
> coordinates and functions. Ideas and suggestions welcome.

This one is not particularly complex, but I think it would be good to include 
in standard tutorials or the user manual, as a lot of people would find it 
useful:
With the new tools to run an action directly when clicking on a feature, you 
can reimplement the functionality of the showhideimg plugin (and the old 
"raster catalog" plugin?).

1) When you have a lot of raster layers spread over a wide area, build an index 
polygon layer with a polygon each raster extent, and the raster filename / path 
in an attribute field.   You can do this using gdaltindex (in QGIS 
"Raster>Miscellaneous>Tile index").

2) Set up an action something like this (I'm using the syntax for QGIS master):
qgis.utils.iface.addRasterLayer('[% "location" %]',os.path.basename('[% 
"location" %]'))
Now when you use the action tool it loads the raster image  for the location 
that you click.

There are two issues though:

(a) If there are overlapping features, the built-in "Run feature action" tool 
in QGIS master only runs the action for the first feature found (#5126).  
Similarly, the "hotlink" plugin only runs one action on one feature each time - 
but at least it lists all the possible actions, so you know that there are 
overlapping features.

(b) Unfortunately, if "Settings>Options>General>Add new layers to selected or 
current group" is not set, or the tile index is not in a group, then QGIS 
always selects a new layer when it is added.  So unless you set that option and 
put the tile index in a group, if you then want to load raster images for 
another location (perhaps an adjacent tile) you need to click on the tile index 
layer before using the action tool again.
I'm filed http://hub.qgis.org/issues/5125 about this inconsistency, but I'm not 
sure which behaviour is intended.  If QGIS *is* intended to automatically 
select new layers when they are added, then I guess it wouldn't be too hard to 
write an action that would load the raster layer and then select the index 
layer again.

The other feature of the showhideimg plugin is that if you click in the same 
area again it turns the raster layer off.  I guess this could also be 
implemented in the layer action with a bit of work...


Regards,
Alister
_______________________________________________
Qgis-user mailing list
Qgis-user@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/qgis-user

Reply via email to