PyQGISでレイヤーの表示名を変更しますか?


8

複数のベクターレイヤーのバッチ処理を行ったところlayer.name()、QGIS の関数にアクセスすると、すべてのファイルの表示名が「解決」されました。私はこの回答をアンダーダークからQGISの処理スクリプトからの出力ベクトルのレイヤー名の変更読みましたか?、名前をファイル名に設定できますが、残念ながら手遅れです。

私のプロジェクトのすべてのファイルをリストに含めることができます

layers = iface.mapCanvas().layers()

これを含むすべての名前:

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

プロジェクトのパスまたはPyQGISのレイヤーファイル取得するためのこの答えの助けを借りて、使用しているファイルの名前を取得できます。

import os 
real_names = []
for li in layers:
   (myDirectory,nameFile) = os.path.split(li.dataProvider().dataSourceUri())
   real_names.append(nameFile.split("|")[0]

読み込みQgsVectorLayerのためのAPIのドキュメンタリーのdidntは私を助けました。私が欲しいのは、ファイル名を表示名として表示するようにファイルの名前を変更することです。Pythonコンソールでそれをアーカイブする方法は?

回答:


7

次のようなものを使用して、すべてのレイヤーの名前をそれぞれのファイル名(拡張子を除く)に変更できます。

import os

for layer in QgsMapLayerRegistry.instance().mapLayers().values():
    basename = os.path.splitext(os.path.basename(layer.source()))[0]
    layer.setLayerName(basename)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.