Comment recharger automatiquement la couche raster si la source est modifiée? (Le chemin est le même mais à l'intérieur du fichier source sont des changements)
J'utilise:
qgis.utils.iface.mapCanvas().refresh()
mais la couche ne se rafraîchit pas.
# # #
Les cartes sont repeintes mais il y a toujours la même image (le fichier source est changé sur le disque)
J'utilise:
layers = qgis.utils.iface.legendInterface().layers()
for layer in layers:
layer.triggerRepaint()
Réponses:
Je suppose que votre question n'inclut pas la détection des modifications, car votre échantillon ne concerne que
QgsMapCanvas.refresh()
Au lieu de cela, vous devez appeler
QgsRasterLayer.triggerRepaint()
Si votre calque s'appelle myLayer:
La même méthode existe également pour les couches vectorielles.
Pour une notification de modification de fichier à faible surcharge, je proposerais d'examiner Qt
QFileSystemWatcher
, qui utilise inotify sur linux et des techniques similaires sur d' autres plates-formes .Bien sûr, cela peut être combiné avec un contrôle MD5 comme proposé par nickves ou un contrôle de temps de modification avec
os.stat
(proposition Nathan W).la source
Vous pouvez vérifier si le hachage du fichier a changé entre les intervalles
par exemple:
C'est un peu hackish, mais l'idée de soulignement est valable
(La vérification du hachage md5 se trouve ici )
la source