Estou tendo problemas para descobrir como iterar sobre as camadas do mapa. Posso acessar a camada atualmente destacada no sumário via iface.activeLayer()
mas quero que meu código funcione em todas as camadas.
Não vejo nada na API que ofereça acesso fácil a essa funcionalidade e não consegui encontrar um bom exemplo on-line, mas talvez eu tenha perdido alguma coisa?
Respostas:
Experimentar...
Selecionado de consolidatethread.py do plug-in QConsolidate .
Descrição do objeto QgsLegendInterface retornado de legendInterface ().
Edit : informações adicionadas sobre 'self' acima.
fonte
Existem também outras duas maneiras:
lhe dará uma lista de camadas
ou
fonte
2.16
e acima dePara o QGIS 2.6, aqui está o código para identificar cada camada e agrupá-las:
Nota: Após o agrupamento, tenho que remover a camada duplicada, então usei
root.removeLayer(lyr)
.fonte
Para o QGIS 3,
QgsMapLayerRegistry
a funcionalidade do foi movida paraQgsProject
.Portanto, para iterar sobre as camadas do mapa, você deve usar essa estrutura:
.mapLayers()
retorna um dicionário estruturado como{layer_x_id: layer_x, layer_y_id: layer_y, ....}
. Em seguida, você pode iterar sobre camadas como:Como
.mapLayers()
retorna um dicionário (dict
), você também pode usar o.values()
método do dicionário, que retorna apenas umlist
que contém camadas nesse caso. Em seguida, você pode iterar sobre camadas como:Se preferir, você pode iterar desta maneira:
fonte
for layer in layers: print(layer)
Você pode usar o script para imprimir as chaves. Ou apenas useprint(layers.keys())
semfor
loop.