Mudando o nome de exibição da camada com o PyQGIS?

8

Fiz um processamento em lote de várias camadas vetoriais e agora o nome de exibição para cada arquivo é "dissolvido" ao acessar a layer.name()função no QGIS. Eu li nesta resposta do underdark para Alterar o nome da camada do vetor de saída do script de processamento no QGIS? , que eu posso definir o nome para o nome do arquivo, mas infelizmente tarde demais.

Consigo colocar todos os arquivos do meu projeto em uma lista com

layers = iface.mapCanvas().layers()

e todos os nomes com isso:

names = [layer.name() for layer in QgsMapLayerRegistry.instance().mapLayers().values()]

Com a ajuda desta resposta para Obtendo o caminho do projeto ou arquivo de camada no PyQGIS? , Posso obter os nomes dos arquivos com os quais estou trabalhando:

import os 
real_names = []
for li in layers:
   (myDirectory,nameFile) = os.path.split(li.dataProvider().dataSourceUri())
   real_names.append(nameFile.split("|")[0]

A leitura do documento da API para o QgsVectorLayer não me ajudou. O que eu quero é renomear os arquivos para mostrar o nome do arquivo como nome para exibição. Como arquivar isso no console python?

LaughU
fonte

Respostas:

7

Você pode usar algo como o seguinte para renomear todas as camadas para o respectivo nome de arquivo (excluindo a extensão):

import os

for layer in QgsMapLayerRegistry.instance().mapLayers().values():
    basename = os.path.splitext(os.path.basename(layer.source()))[0]
    layer.setLayerName(basename)
Joseph
fonte