Objetivo
Criar uma interface de monitoramento dinâmico no QGIS com :
- Gráficos interativos (via Data Plotly)
- Filtros de usuário simples (intervalo, data, tipo de resíduo)
- Indicadores-chave e estatísticas dinâmicos
- Um mapa que se adapta aos dados filtrados
Tudo isso sem sair da interface do QGIS!
Caso de uso: monitoramento de resíduos em praias
Vamos pegar nossa camada releves_dechets com :
Campo | Descrição |
---|---|
praia | Nome da praia |
tipo_resíduo | Categoria do resíduo |
quantidade | Quantidade observada |
data_obs | Data da observação |
Objetivo: permitir que um usuário filtre os dados (por intervalo, data etc.) e veja imediatamente:
- Um mapa atualizado
- Um gráfico dinâmico
- Indicadores atualizados
Etapa 1: filtrar dados interativamente
- Abra a tabela de atributos da camada (clique com o botão direito do mouse > “Abrir a tabela de atributos”).
- Clique no ícone do funil para ativar o filtro.
- Em seguida, clique no ícone do formulário de filtro.
Os campos aparecerão com os widgets definidos (valores únicos, intervalo de datas, etc.). Selecione os valores desejados e clique em “Apply filter” (Aplicar filtro).
Esse filtro não modifica diretamente o mapa, mas você pode :
- usar somente as entidades selecionadas no Data Plotly,
- ou criar uma camada virtual com um filtro SELECT * FROM releves_waste WHERE ….
Etapa 2: Criar um gráfico interativo com o Data Plotly
- Abra o painel Data Plotly (menu View > Panels > Data Plotly).
- Escolha o tipo de gráfico (por exemplo, gráfico de barras).
- Configure:
- Eixo X: type_dechet
- Eixo Y: quantidade
- Camada: sua camada filtrada
- Marque Usar somente os recursos selecionados se estiver filtrando pela tabela
Assim que você modificar o filtro ou selecionar outros recursos, o gráfico será atualizado.
Etapa 3: exibir indicadores dinâmicos com rótulos
Para evitar scripts complexos ou visualizações temporárias, o QGIS permite que você exiba estatísticas dinâmicas diretamente no mapa, na forma de rótulos anexados às características.
Objetivo
Exibir, somente para características selecionadas:
- O nome da praia
- A quantidade total de resíduos observada nessa faixa
Método
- Ative os rótulos em sua camada.
- Na expressão do rótulo, use :
if(
is_selected(),
"plage" || '\n' ||
'Total déchets : ' ||
aggregate(
'suivi_plages_dechets',
'sum',
"quantite",
filter:= "plage" = attribute(@parent, 'plage')
),
''
)
Essa expressão verifica se o intervalo está selecionado (is_selected()) e, em seguida, exibe :
- Seu nome
- A soma do lixo para esse intervalo, calculada dinamicamente por meio de aggregate().
Resultado
Quando você seleciona um ou mais intervalos, o rótulo é exibido somente para os selecionados, com seus respectivos totais de lixo.
Variante (opcional)
Você também pode filtrar por meio da tabela de atributos ou de um formulário de pesquisa, e os rótulos reagirão automaticamente à seleção.
Etapa 4: Organizar o espaço de trabalho
Crie uma interface de painel:
- Esquerda: tabela de atributos ou filtros
- Centro: mapa
- Parte inferior: gráfico do Data Plotly
- Direita: contadores/estatísticas (por meio de caixas de texto)
Salve seu layout em Project > Save layout (Projeto > Salvar layout).
Para resumir
Elemento | Ferramentas usadas |
---|---|
Filtragem | Tabela de atributos / Formulário |
Gráficos reativos | Data Plotly |
Estatísticas dinâmicas | Expressões / Widgets personalizado |
Interface do usuário | Organização do espaço de trabalho |
Bônus: dicas avançadas
- Crie uma camada virtual com um filtro dinâmico para centralizar os dados exibidos
- Use as funções CASE e regexp_match() para agrupamentos avançados
- Teste os plug-ins: Quick Filter, Attribute Table Filter, Input Widgets
- Considere um projeto PostgreSQL/PostGIS com visualizações materializadas filtráveis por data ou local
Para continuar…
Em um artigo futuro, veremos como transformar esse painel do QGIS em uma interface da Web com o :
- Exportação para o QGIS Server ou Lizmap
- Painel on-line filtrável (intervalo, data, etc.)
- Integração em um site participativo ou cidadão