Wie wird die Rasterebene automatisch neu geladen, wenn die Quelle geändert wird? (Der Pfad ist der gleiche, aber innerhalb der Quelldatei gibt es Änderungen.)
Ich benutze:
qgis.utils.iface.mapCanvas().refresh()
aber Schicht nicht aktualisieren.
# # #
Die Karten werden neu gestrichen, aber es gibt immer noch das gleiche Bild (Quelldatei wird auf Disc geändert)
Ich benutze:
layers = qgis.utils.iface.legendInterface().layers()
for layer in layers:
layer.triggerRepaint()
Antworten:
Ich nehme an, Ihre Frage enthält keine Änderungserkennung, da Ihre Stichprobe nur Bedenken betrifft
QgsMapCanvas.refresh()
Stattdessen musst du anrufen
QgsRasterLayer.triggerRepaint()
Wenn Ihre Ebene myLayer heißt:
Die gleiche Methode gibt es auch für Vektorebenen.
Für niedrige Overhead - Dateiänderungsbenachrichtigung würde ich in Qt schlagen suchen
QFileSystemWatcher
, die Verwendung macht inotify auf Linux und ähnliche Techniken auf anderen Plattformen .Dies kann natürlich mit einer MD5-Prüfung kombiniert werden, wie von Nickves vorgeschlagen, oder einer Änderung der Änderungszeit mit
os.stat
(Vorschlag von Nathan W).quelle
Sie können überprüfen, ob sich der Datei-Hash zwischen den Intervallen geändert hat
z.B:
Es ist ein bisschen hackisch, aber die unterstreichende Idee ist gültig
(Der MD5-Hash-Check finden Sie hier )
quelle