J'ai du mal à comprendre comment itérer sur les couches de la carte. Je peux accéder à la couche actuellement mise en évidence dans la table des matières via iface.activeLayer()
mais je veux que mon code fonctionne sur toutes les couches.
Je ne vois rien dans l'API qui offre un accès facile à cette fonctionnalité et je n'ai pas pu trouver un bon exemple en ligne mais peut-être que j'ai raté quelque chose?
Réponses:
Essayer...
Culled from consolidatethread.py from QConsolidate plugin .
Description de l' objet QgsLegendInterface renvoyée par legendInterface ().
Edit : ajout d'informations sur «soi» ci-dessus.
la source
Il existe également deux autres méthodes:
vous donnera une liste de couches
ou
la source
2.16
et auPour QGIS 2.6, voici le code pour identifier chaque couche et les regrouper:
Remarque: Après le regroupement, je dois supprimer le calque en double, j'ai donc utilisé
root.removeLayer(lyr)
.la source
Pour QGIS 3,
QgsMapLayerRegistry
la fonctionnalité de a été déplacée versQgsProject
.Donc, pour itérer sur des couches de carte, vous devez utiliser cette structure:
.mapLayers()
renvoie un dictionnaire structuré comme{layer_x_id: layer_x, layer_y_id: layer_y, ....}
. Ensuite, vous pouvez parcourir les calques comme:Parce que
.mapLayers()
renvoie un dictionnaire (dict
), vous pouvez également utiliser la.values()
méthode du dictionnaire qui renvoie uniquement unlist
qui contient des couches dans ce cas. Ensuite, vous pouvez parcourir les calques comme:Si vous préférez, vous pouvez répéter de cette façon:
la source
for layer in layers: print(layer)
Vous pouvez utiliser le script pour imprimer les clés. Ou utilisez simplementprint(layers.keys())
sansfor
boucle.