Ändern des Anzeigenamens der Ebene mit PyQGIS?

8

Ich habe mehrere Stapelebenen stapelweise verarbeitet und jetzt wird der Anzeigename für jede Datei beim Zugriff auf die layer.name()Funktion in QGIS "aufgelöst" . Ich habe in dieser Antwort von underdark zu Ändern des Layernamens des Ausgabevektors aus dem Verarbeitungsskript in QGIS gelesen . , dass ich den Namen auf den Dateinamen setzen kann, aber leider zu spät.

Ich kann alle Dateien in meinem Projekt in eine Liste mit aufnehmen

layers = iface.mapCanvas().layers()

und alle Namen damit:

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

Mit Hilfe dieser Antwort auf Pfad des Projekts oder Layer-Datei in PyQGIS abrufen? Ich kann die Namen der Datei abrufen, mit der ich arbeite:

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

Das Lesen des API-Dokuments für den QgsVectorLayer hat mir nicht geholfen. Ich möchte die Dateien umbenennen, um den Dateinamen als Anzeigenamen anzuzeigen. Wie archiviere ich das mit der Python-Konsole?

LaughU
quelle

Antworten:

7

Sie können Folgendes verwenden, um alle Ebenen in ihren jeweiligen Dateinamen umzubenennen (mit Ausnahme der Erweiterung):

import os

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