Bagaimana cara me-reload layer raster secara otomatis jika sumber diubah? (Pathnya sama tetapi file sumber di dalamnya berubah)
Saya menggunakan:
qgis.utils.iface.mapCanvas().refresh()
tetapi lapisan tidak menyegarkan.
# # #
Peta mengecat ulang tetapi masih ada gambar yang sama (file sumber diubah pada disk)
Saya menggunakan:
layers = qgis.utils.iface.legendInterface().layers()
for layer in layers:
layer.triggerRepaint()
Jawaban:
Saya kira pertanyaan Anda tidak termasuk deteksi perubahan, karena sampel Anda hanya menyangkut
QgsMapCanvas.refresh()
Sebaliknya, Anda harus menelepon
QgsRasterLayer.triggerRepaint()
Jika lapisan Anda disebut myLayer:
Metode yang sama juga ada untuk layer vektor.
Untuk pemberitahuan perubahan file overhead yang rendah, saya akan mengusulkan melihat ke Qt
QFileSystemWatcher
, yang menggunakan inotify di linux dan teknik serupa di platform lain .Tentu saja ini dapat digabungkan dengan cek MD5 seperti yang diusulkan oleh nikel atau cek waktu modifikasi dengan
os.stat
(proposal Nathan W).sumber
Anda dapat memeriksa apakah hash file telah berubah di antara interval
misalnya:
Ini agak meretas, tetapi gagasan garis bawahnya valid
(Cek hash MD5 ditemukan di sini )
sumber