¿Cómo recargar automáticamente la capa ráster si se cambia la fuente? (La ruta es la misma pero dentro del archivo fuente hay cambios)
Yo suelo:
qgis.utils.iface.mapCanvas().refresh()
pero la capa no se actualiza.
# # #
Los mapas se están repintando, pero todavía hay la misma imagen (el archivo fuente se cambia en el disco)
Yo suelo:
layers = qgis.utils.iface.legendInterface().layers()
for layer in layers:
layer.triggerRepaint()
Respuestas:
Supongo que su pregunta no incluye la detección de cambios, ya que su muestra solo concierne
QgsMapCanvas.refresh()
En cambio tienes que llamar
QgsRasterLayer.triggerRepaint()
Si su capa se llama myLayer:
El mismo método existe para las capas vectoriales también.
Para una notificación de cambio de archivo de baja sobrecarga, propongo buscar en Qt's
QFileSystemWatcher
, que hace uso de inotify en linux y técnicas similares en otras plataformas .Por supuesto, esto se puede combinar con una verificación MD5 según lo propuesto por nickves o una verificación de tiempo de modificación con
os.stat
(propuesta de Nathan W).fuente
Puede verificar si el hash del archivo ha cambiado entre intervalos
p.ej:
Es un poco difícil, pero la idea de subrayado es válida.
(La comprobación de hash md5 se encuentra aquí )
fuente