Saya memiliki proyek QGIS dengan lapisan, berdasarkan pada pertanyaan PostGIS SQL yang menggunakan tanggal saat ini. Karena data dalam database berubah, kueri ini mengembalikan data yang berbeda setiap hari.
Apakah mungkin untuk secara dinamis mengubah nama lapisan dalam panel lapisan pohon, sehingga mewakili tanggal saat ini? (mis. nama lapisan seperti Traffic on 24.01.2015
, yang berubah setiap hari baru). Data untuk caption harus diambil dari atribut fitur apa pun dalam sebuah layer - mereka semua memiliki nilai yang sama untuk bidang traffic_date
.
qgis
pyqgis
layers
query-layer
dynamic-layer
mofoyoda
sumber
sumber
Jawaban:
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 gantiopenProject()
dengan kode Python berikut: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.
sumber
on
dan strip dari sana ke ujung untuk menghemat menggunakan regex.