Objectif
Créer dans QGIS une interface de suivi dynamique avec :
- Des graphes interactifs (via Data Plotly)
- Des filtres utilisateur simples (plage, date, type de déchet)
- Des indicateurs clés et statistiques dynamiques
- Une carte qui s’adapte aux données filtrées
Le tout sans quitter l’interface QGIS !
Cas d’usage : suivi des déchets sur les plages
Nous reprenons notre couche releves_dechets
comportant :
Champ | Description |
---|---|
plage | Nom de la plage |
type_dechet | Catégorie de déchet |
quantite | Quantité observée |
date_obs | Date de l’observation |
Objectif : permettre à un utilisateur de filtrer les données (par plage, date…) et de voir immédiatement :
- Une carte actualisée
- Un graphique dynamique
- Des indicateurs mis à jour
Étape 1 : filtrer les données interactivement
- Ouvrez la table attributaire de la couche (clic droit > « Ouvrir la table attributaire »).
- Cliquez sur l’icône entonnoir pour activer le filtre.
- Cliquez ensuite sur l’icône formulaire de filtrage.
Les champs apparaîtront avec les widgets définis (valeurs uniques, plage de dates…). Sélectionnez les valeurs désirées et cliquez sur « Appliquer le filtre ».
Ce filtre ne modifie pas directement la carte, mais vous pouvez :
- utiliser uniquement les entités sélectionnées dans Data Plotly,
- ou créer une couche virtuelle avec un
SELECT * FROM releves_dechets WHERE ...
.
Étape 2 : créer un graphique interactif avec Data Plotly
- Ouvrez le panneau Data Plotly (menu Vue > Panneaux > Data Plotly).
- Choisissez le type de graphique (ex. Bar chart).
- Configurez :
- X Axis :
type_dechet
- Y Axis :
quantite
- Layer : votre couche filtrée
- Cochez Use only selected features si vous filtrez via la table
- X Axis :
Dès que vous modifiez le filtre ou sélectionnez d’autres entités, le graphique se met à jour.
Étape 3 : afficher des indicateurs dynamiques avec des étiquettes
Pour éviter les scripts complexes ou les vues temporaires, QGIS permet d’afficher des statistiques dynamiques directement sur la carte, sous forme d’étiquettes attachées aux entités.
Objectif
Afficher, uniquement pour les entités sélectionnées :
- Le nom de la plage
- Le total de déchets observés sur cette plage
Méthode
- Activez les étiquettes sur votre couche.
- Dans l’expression de l’étiquette, utilisez :
if(
is_selected(),
"plage" || '\n' ||
'Total déchets : ' ||
aggregate(
'suivi_plages_dechets',
'sum',
"quantite",
filter:= "plage" = attribute(@parent, 'plage')
),
''
)
Cette expression vérifie si la plage est sélectionnée (is_selected()
), puis affiche :
- Son nom
- La somme des déchets pour cette plage, calculée dynamiquement via
aggregate()
.
Résultat
Quand vous sélectionnez une ou plusieurs plages, l’étiquette s’affiche uniquement sur celles sélectionnées, avec leur total de déchets respectif.
Variante (optionnelle)
Vous pouvez aussi filtrer via la table attributaire ou un formulaire de recherche, et les étiquettes réagiront automatiquement à la sélection.
Étape 4 : organiser l’espace de travail
Créez une interface de tableau de bord :
- À gauche : table attributaire ou filtres
- Au centre : carte
- En bas : graphique Data Plotly
- À droite : compteurs/statistiques (via cadres texte)
Enregistrez votre disposition via Projet > Enregistrer la disposition.
En résumé
Élément | Outils utilisés |
---|---|
Filtrage | Table attributaire / Formulaire |
Graphiques réactifs | Data Plotly |
Statistiques dynamiques | Expressions / Widgets personnalisés |
Interface utilisateur | Organisation de l’espace de travail |
Bonus : astuces avancées
- Créez une couche virtuelle avec un filtre dynamique pour centraliser les données affichées
- Utilisez les fonctions
CASE
,regexp_match()
pour des regroupements avancés - Testez les plugins : Quick Filter, Attribute Table Filter, Input Widgets
- Envisagez un projet PostgreSQL/PostGIS avec des vues matérialisées filtrables par date ou site
À suivre…
Dans un prochain article, nous verrons comment transformer ce tableau de bord QGIS en une interface web avec :
- Export vers QGIS Server ou Lizmap
- Tableau de bord en ligne filtrable (plage, date…)
- Intégration dans un site participatif ou citoyen