Lấy danh sách tên lớp bằng PyQGIS?


11

Tôi cần một danh sách chứa tên của tất cả các lớp trong phiên QGIS. Tôi đã làm nhiệm vụ như

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

nhưng điều này có vấn đề là chỉ có tên của các lớp nhìn thấy được trích xuất. Làm cách nào tôi có thể nhận được một danh sách với tên của tất cả các lớp (có thể nhìn thấy hoặc không) bằng PyQGIS?

Câu trả lời:


18

QgsMapLayerRegistry.instance().mapLayers() sẽ cung cấp cho bạn tất cả các lớp được mở.

Nếu bạn muốn tên thì:

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

names sẽ là một danh sách các tên lớp

hoặc sử dụng chức năng bình thường:

for layer in QgsMapLayerRegistry.instance().mapLayers().values():
    print layer.name()

6

Kể từ phiên bản 3, chức năng QgsMapLayerRegistryđã được chuyển đến QgsProject: https://qgis.org/api/api_break.html

Cập nhật cho QGIS3.x:

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

theo câu trả lời của @Nathan W, điều này tạo ra một danh sách các lớp trong dự án hiện tại:

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.