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

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


Hi Matthias,

that works. Thanks a lot!

Regards
Otto

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

> Hi Otto,
> 
> Try this
> 
> class MyPluginDialog (QDialog,Ui_MyPluginDialog)::
>      def __init__(self):
>          self.setupUi(self)
>          self.initLayerCombobox( self.ui.InRastA, 'key_of_default_layer' )
> 
>      def initLayerCombobox(self,combobox, default):
>          combobox.clear()
>          reg = QgsMapLayerRegistry.instance()
>          for ( key, layer ) in reg.mapLayers().iteritems():
>              if layer.type() == QgsMapLayer.RasterLayer and
> ( layer.usesProvider() and layer.providerKey() == 'gdal' ):
> combobox.addItem( layer.name(), key ) 
>          idx = combobox.findData( default )
>          if idx != -1:
>              combobox.setCurrentIndex( idx )
> 
> 
> Matthias
> 
> On 01/17/2013 05:07 PM, Otto Dassau wrote:
> > 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
> > _______________________________________________
> > Qgis-developer mailing list
> > Qgis-developer at lists.osgeo.org
> > http://lists.osgeo.org/mailman/listinfo/qgis-developer
> 
> _______________________________________________
> Qgis-developer mailing list
> Qgis-developer at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/qgis-developer


-- 
Geoinformatik Büro Dassau - http://www.gbd-consult.de
FOSSGIS consulting , training , support  and analysis
Ackerstrasse 144c  ,  D - 40233 Düsseldorf ,  Germany
Tel: +49-(0)211-47468178 , Mobile: +49-(0)171-4687540

--
Community Advisor - QGIS Project Steering Committee


More information about the Qgis-developer mailing list