He estado utilizando el plugin "Lista de capas" ( https://plugins.qgis.org/plugins/layerList/ ) que hace un gran trabajo de crear un archivo de texto con todas las capas en un archivo de proyecto qgs.
Quiero ampliarlo para obtener el grupo y subgrupo en el que se encuentra la capa.
El resultado deseado será
Proveedor,Grupo,Subgrupo,Nombre, Ruta, Filename.ext
ogr,Administración, Terreno,CL_TENURE_POLYGON_DC,D:/GIS/Data/DSE/Vicmap/VMCLTENURE/,CL_TENURE_POLYGON_DC.tab
Supongo que el cambio sería
def loadActiveLayers(self):
self.dlgCreate.listWidget.clear() # Clear the list widget before it is filled again
canvas = iface.mapCanvas()
activeLayers = canvas.layers() # Create list with all active layers
layers = u"# Layer List - QGIS Plugin by Klas Karlsson\n" # Create list header and "test" line in a text string
for layer in reversed(activeLayers): # Repeat for all layers in the list
layerType = layer.type() # Is it Vector or Raster?
layerSource = layer.publicSource() # path or command for the layer source
provider = layer.providerType() # Example org, gdal, wms, wfs, postgres, etc
if layerType == QgsMapLayer.VectorLayer:
layers = layers + (u"%s,%s,%s\n" % (provider, layer.name(), layerSource))
después de layerSource añadir algo para grupo y subgrupo (tal vez .layerTreeRoot() de https://qgis.org/api/classQgsLayerTreeGroup.html )
self.dlgCreate.listWidget.addItem(layer.name()) # Add the layer name to the list
self.dlgCreate.listWidget.addItem(capa.?
if layerType == QgsMapLayer.RasterLayer:
layers = layers + (u"%s,%s,%s\n" % (provider, layer.name(), layerSource))
self.dlgCreate.listWidget.addItem(layer.name()) # Add the layer name to the list
return layers # Send back all the layers in a text string ready to be saved to a file
¿Harían falta otros cambios?