正解であれば、答えは「はい」です。QGISは動的レイヤー名をサポートしています。
プロジェクトを開くたびに実行されるPythonマクロを作成する必要があります。これはワークフローです:
次のPythonコードに移動しQGIS->Project->Project Properties
て置き換えopenProject()
ます。
def openProject():
import re, qgis
iface = qgis.utils.iface
layers = iface.mapCanvas().layers()
for lyr in layers:
# Get date from layer
it=lyr.getFeatures()
feat = next(it)
idx = lyr.fieldNameIndex('traffic_da')
currDate = feat.attributes()[idx]
# Set new layer name
name = lyr.name()
if re.search(' on \d{2,2}.\d{2,2}.\d{4,4}$', name):
name = name[:-14]
name = name + " on " + currDate
lyr.setLayerName( name )
注1:シェープファイルでテストしたので、日付を取得するフィールドは、シェープファイルtraffic_da
はフィールド名でこれ以上の文字をサポートしていないためです。レイヤーで機能するようにコードで調整します。
注2:プロジェクトの構成によっては、必要なレイヤーのみに作用する検証コードを追加する必要があります。たとえば、ラスターレイヤーでコードを実行すると、間違いなくエラーが表示されます。これに関してサポートが必要な場合は、新しい質問を開いてください。私がお手伝いします。
次のようにして、プロジェクトでマクロを必ず有効にしてください。 Settings->Options->General->Enable macros: Always
レイヤーをプロジェクトにロードします。
プロジェクトを保存します。
この時点からプロジェクトを開くたびに、レイヤー名は動的になり、日付はtraffic_date
各レイヤーの属性テーブルのフィールドから取得されます。
初めてプロジェクトを開いた後、これは私のレイヤー名が動的に生成された方法です:
これはあなたが始めるのに役立つと思います。明らかでない問題に直面した場合は教えてください。