PyQGISを使用してレイヤー名のリストを取得しますか?


11

QGISセッションのすべてのレイヤーの名前を含むリストが必要です。私は次のように仕事をしました

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

しかし、これには可視レイヤーの名前のみが抽出されるという問題があります。PyQGISを使用して、すべての(表示されているかどうかにかかわらず)レイヤーの名前のリストを取得するにはどうすればよいですか?

回答:


18

QgsMapLayerRegistry.instance().mapLayers() 開いているすべてのレイヤーが表示されます。

名前が必要な場合:

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

names レイヤー名のリストになります

または通常の関数を使用します:

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

6

バージョン3以降、QgsMapLayerRegistry機能はhttps://qgis.org/api/api_break.htmlに移動しましたQgsProject

QGIS3.xの更新:

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

@Nathan Wの回答によると、これは現在のプロジェクトのレイヤーのリストを生成します:

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.