Liste der Ebenennamen mit PyQGIS abrufen?

11

Ich benötige eine Liste mit den Namen aller Ebenen in einer QGIS-Sitzung. Ich habe die Aufgabe als erledigt

layersNames = []
for i in self.iface.mapCanvas().layers():
   layersNames.append(str(i.name()))

Dies hat jedoch das Problem, dass nur die Namen für die sichtbaren Ebenen extrahiert werden. Wie kann ich mit PyQGIS eine Liste mit den Namen aller (sichtbaren oder nicht sichtbaren) Ebenen abrufen?

jgpallero
quelle

Antworten:

18

QgsMapLayerRegistry.instance().mapLayers() gibt Ihnen alle Ebenen, die geöffnet sind.

Wenn Sie die Namen wollen, dann:

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

names wird eine Liste von Ebenennamen sein

oder mit einer normalen Funktion:

for layer in QgsMapLayerRegistry.instance().mapLayers().values():
    print layer.name()
Nathan W.
quelle
6

Seit Version 3 wurden Funktionen auf QgsMapLayerRegistryFolgendes verschoben QgsProject: https://qgis.org/api/api_break.html

Update für QGIS3.x:

from qgis.core import QgsProject
names = [layer.name() for layer in QgsProject.instance().mapLayers().values()]
print(names)

Gemäß der Antwort von @Nathan W wird eine Liste der Ebenen im aktuellen Projekt erstellt:

['GoogleSat', 'MyPointsLayer', 'Roads', 'House_numbers']

RafDouglas
quelle