Tengo problemas para descubrir cómo iterar sobre las capas del mapa. Puedo acceder a la capa resaltada actualmente en la tabla de contenido, iface.activeLayer()
pero quiero que mi código funcione en todas las capas.
No veo nada en la API que proporcione fácil acceso a esta funcionalidad y no pude encontrar un buen ejemplo en línea, pero ¿tal vez me perdí algo?
Respuestas:
Tratar...
Seleccionado de consolidatethread.py del complemento QConsolidate .
Descripción del objeto QgsLegendInterface devuelto por legendInterface ().
Editar : se agregó información sobre 'self' arriba.
fuente
También hay otras dos formas:
te dará una lista de capas
o
fuente
2.16
y más alláPara QGIS 2.6 aquí está el código para identificar cada capa y agruparlas:
Nota: Después de la agrupación, tengo que eliminar la capa duplicada, así que la usé
root.removeLayer(lyr)
.fuente
Para QGIS 3,
QgsMapLayerRegistry
la funcionalidad se ha movido aQgsProject
.Entonces, para iterar sobre las capas del mapa, debe usar esa estructura:
.mapLayers()
devuelve un diccionario estructurado como{layer_x_id: layer_x, layer_y_id: layer_y, ....}
. Luego puede iterar sobre capas como:Como
.mapLayers()
devuelve un diccionario (dict
), también puede usar el.values()
método de diccionario que devuelve solo unlist
que contiene capas en ese caso. Luego puede iterar sobre capas como:Si lo prefiere, puede iterar de esta manera:
fuente
for layer in layers: print(layer)
Puede usar el script para imprimir las claves. O simplemente usarprint(layers.keys())
sinfor
bucle.