Como recarregar automaticamente a camada rasterizada se a fonte for alterada? (O caminho é o mesmo, mas dentro do arquivo de origem há alterações)
Eu uso:
qgis.utils.iface.mapCanvas().refresh()
mas a camada não é atualizada.
# # #
Os mapas estão pintando novamente, mas ainda há a mesma imagem (o arquivo de origem foi alterado no disco)
Eu uso:
layers = qgis.utils.iface.legendInterface().layers()
for layer in layers:
layer.triggerRepaint()
Respostas:
Suponho que sua pergunta não inclua detecção de alterações, pois sua amostra se refere apenas a
QgsMapCanvas.refresh()
Em vez disso, você deve ligar
QgsRasterLayer.triggerRepaint()
Se sua camada for chamada myLayer:
O mesmo método existe também para as camadas vetoriais.
Para baixa notificação de alteração de arquivo de sobrecarga, proponho olhar para os Qt's
QFileSystemWatcher
, que usam o inotify no linux e técnicas semelhantes em outras plataformas .Obviamente, isso pode ser combinado com uma verificação MD5, conforme proposto por nickves, ou com uma verificação de tempo de modificação com
os.stat
(proposta de Nathan W).fonte
Você pode verificar se o hash do arquivo mudou entre os intervalos
por exemplo:
É um pouco tolo, mas a ideia sublinhada é válida
(A verificação de hash MD5 encontrada aqui )
fonte