Eu tenho um projeto QGIS com camadas, com base em consultas SQL PostGIS que usam data atual. Como os dados no banco de dados são alterados, essas consultas retornam dados diferentes a cada novo dia.
É possível alterar dinamicamente o nome da camada no painel da árvore de camadas, para que ele represente a data atual? (ou seja, nome da camada Traffic on 24.01.2015
, que muda a cada novo dia). Os dados para a legenda devem ser obtidos do atributo de qualquer recurso em uma camada - todos eles têm o mesmo valor para o campo traffic_date
.
qgis
pyqgis
layers
query-layer
dynamic-layer
mofoyoda
fonte
fonte
Respostas:
Se você acertou, a resposta é sim, o QGIS suporta nomes de camadas dinâmicas.
Você precisaria escrever uma macro Python para ser executada toda vez que o projeto for aberto. Este seria o fluxo de trabalho:
Vá para
QGIS->Project->Project Properties
e substituaopenProject()
pelo seguinte código Python:Nota 1: Eu testei em arquivos shapefiles, portanto, o campo do qual tomo datas é
traffic_da
porque os Shapefiles não suportam mais letras nos nomes dos campos. Ajuste isso no código para trabalhar em suas camadas.Nota 2: Dependendo da configuração do seu projeto, você deve adicionar o código de validação para atuar apenas nas camadas desejadas. Por exemplo, se você executar o código em camadas raster, os erros aparecerão com certeza. Se você precisar de ajuda com isso, abra uma nova pergunta, eu posso ajudá-lo.
Certifique-se de habilitar macros no seu projeto, desta maneira:
Settings->Options->General->Enable macros: Always
Carregue suas camadas no projeto.
Salve seu projeto.
Sempre que você abrir seu projeto a partir deste ponto, os nomes de suas camadas serão dinâmicos, a data será retirada do campo
traffic_date
na tabela de atributos de cada camada.Após a primeira vez que abri o projeto, foi assim que meus nomes de camada foram gerados dinamicamente:
Acho que isso pode ajudar você a começar. Diga-me se você enfrentar problemas não óbvios.
fonte
on
e a faixa de lá até o final para economizar usando o regex.