[Qgis-developer] select a loaded raster layer from qgis legend into python plugin

Otto Dassau dassau at gbd-consult.de
Thu Jan 17 08:07:25 PST 2013


Hi Matthias,

thanks for your help. I guess it is similar to what I found?

def getRasterLayersNames():
	layerList = []
	layerMap = QgsMapLayerRegistry.instance().mapLayers()
    	for name, layer in layerMap.iteritems():
        	if layer.type() == QgsMapLayer.RasterLayer and
		  ( layer.usesProvider() and layer.providerKey() ==
		  'gdal' ): layerList.append( unicode( layer.name()))
		return layerList

If I understand correctly your function selects all raster layers from
QgsMapLayerRegistry. Now I would like to visualize the layer list in the
combobox (InRastA) of the plugin dialog file. I found something that works
for vector layers:

	def manageGui(self):
	        myList = []
	        self.ui.InRastA.clear()
	        myList = initLayerCombobox()
	        self.ui.InRastA.addItems( myList )
	        return 

But is doesn't work for raster that way, if I use your function. How is it
possible to make the raster layers selectable / show up in the plugin dialog?

Regards
Otto

Am Thu, 17 Jan 2013 16:21:51 +0100
schrieb Matthias Kuhn <matthias.kuhn at gmx.ch>:

> Hi Otto,
> 
> here a small extract from a plugin I wrote:
> 
> Just check for the layer type to only list raster layers
> 
>     def initLayerCombobox(self,combobox, default):
>         reg = QgsMapLayerRegistry.instance()
>         for ( key, layer ) in reg.mapLayers().iteritems():
>             combobox.addItem( layer.name(), key )
>         
>         idx = combobox.findData( default )
>         if idx != -1:
>             combobox.setCurrentIndex( idx )
> 
> Regards
> 
> On Thu, 2013-01-17 at 15:54 +0100, Otto Dassau wrote:
> > Hi,
> > 
> > I would like to write a small python plugin to analyse some raster data,
> > but I haven't managed to select a loaded layer yet. I searched the
> > howtos and found several simple examples about:
> > 
> > # get the currently active layer
> >   layer = self.iface.mapCanvas().currentLayer()
> > 
> > but as I said I would like to select one of the loaded raster layers
> > from the qgis legend using a QtGui.QComboBox in the plugin dialog. At
> > the moment I tried the getRasterLayersNames() function I found in
> > several other plugins but it seems I am missing something, because the
> > raster layers are not selectable. Can someone point me to a simple
> > example to understand the general procedure?
> > 
> > Thanks a lot
> > Otto



More information about the Qgis-developer mailing list