¿Cambiar el nombre para mostrar de la capa con PyQGIS?


8

Hice un procesamiento por lotes de varias capas vectoriales y ahora el nombre para mostrar de cada archivo se "disuelve" al acceder a la layer.name()función en QGIS. ¿ Leí en esta respuesta de underdark a Cambiar el nombre de la capa del vector de salida del script de procesamiento en QGIS? , que puedo establecer el nombre del archivo pero desafortunadamente demasiado tarde.

Puedo obtener todos los archivos de mi proyecto para estar en una lista con

layers = iface.mapCanvas().layers()

y todos los nombres con esto:

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

Con la ayuda de esta respuesta a ¿ Cómo obtener la ruta del proyecto o el archivo de capa en PyQGIS? , Puedo obtener los nombres del archivo con el que estoy trabajando:

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

Leer el API API para QgsVectorLayer no me ayudó. Lo que quiero es cambiar el nombre de los archivos para mostrar el nombre del archivo como nombre para mostrar. ¿Cómo archivar eso con la consola de Python?

Respuestas:


7

Puede usar algo como lo siguiente para cambiar el nombre de todas las capas a su nombre de archivo respectivo (excluyendo la extensión):

import os

for layer in QgsMapLayerRegistry.instance().mapLayers().values():
    basename = os.path.splitext(os.path.basename(layer.source()))[0]
    layer.setLayerName(basename)
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.