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?

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()

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']

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.