Jika saya benar, jawabannya adalah ya, QGIS mendukung nama lapisan dinamis.
Anda perlu menulis makro Python untuk dijalankan setiap kali proyek dibuka. Ini akan menjadi alur kerja:
Pergi ke QGIS->Project->Project Properties
dan ganti openProject()
dengan kode Python berikut:
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 )
Catatan 1: Saya mengujinya di Shapefile, jadi bidang tempat saya mengambil tanggal adalah traffic_da
karena Shapefile tidak mendukung lebih banyak huruf dalam nama bidang. Sesuaikan itu dalam kode untuk bekerja pada lapisan Anda.
Catatan 2: Bergantung pada konfigurasi proyek Anda, Anda harus menambahkan kode validasi untuk bertindak hanya pada lapisan yang Anda inginkan. Misalnya, jika Anda menjalankan kode pada layer raster, kesalahan pasti akan muncul. Jika Anda perlu bantuan dengan ini, buka pertanyaan baru, saya dapat membantu Anda.
Pastikan Anda mengaktifkan makro di proyek Anda, dengan cara ini: Settings->Options->General->Enable macros: Always
Muat layer Anda ke proyek.
Simpan proyek Anda.
Setiap kali Anda membuka proyek Anda dari titik ini, nama layer Anda akan dinamis, tanggal akan diambil dari bidang traffic_date
pada setiap tabel atribut layer.
Setelah pertama kali saya membuka proyek, ini adalah bagaimana nama layer saya dihasilkan secara dinamis:
Saya pikir ini dapat membantu Anda memulai. Katakan padaku jika kamu menghadapi masalah yang tidak jelas.