Mendapatkan daftar nama layer menggunakan PyQGIS?

11

Saya perlu daftar yang berisi nama-nama semua lapisan dalam sesi QGIS. Saya melakukan tugas sebagai

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

tetapi ini memiliki masalah bahwa hanya nama untuk lapisan yang terlihat diekstraksi. Bagaimana saya bisa mendapatkan daftar dengan nama-nama semua lapisan (terlihat atau tidak) menggunakan PyQGIS?

jgpallero
sumber

Jawaban:

18

QgsMapLayerRegistry.instance().mapLayers() akan memberi Anda semua layer yang dibuka.

Jika Anda ingin nama itu:

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

names akan ada daftar nama layer

atau menggunakan fungsi normal:

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

Sejak versi 3, QgsMapLayerRegistryfungsi telah dipindahkan ke QgsProject: https://qgis.org/api/api_break.html

Pembaruan untuk QGIS3.x:

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

sesuai jawaban @Nathan W, ini menghasilkan daftar lapisan dalam proyek saat ini:

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

RafDouglas
sumber