﻿{"id":14236,"date":"2025-07-08T10:00:00","date_gmt":"2025-07-08T08:00:00","guid":{"rendered":"https:\/\/www.sigterritoires.fr\/?p=14236"},"modified":"2025-07-01T10:26:37","modified_gmt":"2025-07-01T08:26:37","slug":"construire-un-tableau-de-bord-interactif-dans-qgis-analyse-dynamique-avec-data-plotly-widgets-et-expressions","status":"publish","type":"post","link":"https:\/\/www.sigterritoires.fr\/index.php\/construire-un-tableau-de-bord-interactif-dans-qgis-analyse-dynamique-avec-data-plotly-widgets-et-expressions\/","title":{"rendered":"Construire un tableau de bord interactif dans QGIS : analyse dynamique avec Data Plotly, widgets et expressions"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Objectif\"><\/span>Objectif<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Cr\u00e9er dans QGIS une interface de suivi dynamique avec :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Des graphes interactifs (via Data Plotly)<\/li>\n\n\n\n<li>Des filtres utilisateur simples (plage, date, type de d\u00e9chet)<\/li>\n\n\n\n<li>Des indicateurs cl\u00e9s et statistiques dynamiques<\/li>\n\n\n\n<li>Une carte qui s\u2019adapte aux donn\u00e9es filtr\u00e9es<\/li>\n<\/ul>\n\n\n\n<p>Le tout sans quitter l\u2019interface QGIS !<\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-light-blue ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Contenu <\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/construire-un-tableau-de-bord-interactif-dans-qgis-analyse-dynamique-avec-data-plotly-widgets-et-expressions\/#Objectif\" >Objectif<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/construire-un-tableau-de-bord-interactif-dans-qgis-analyse-dynamique-avec-data-plotly-widgets-et-expressions\/#Cas_dusage_suivi_des_dechets_sur_les_plages\" >Cas d\u2019usage : suivi des d\u00e9chets sur les plages<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/construire-un-tableau-de-bord-interactif-dans-qgis-analyse-dynamique-avec-data-plotly-widgets-et-expressions\/#Etape_1_filtrer_les_donnees_interactivement\" >\u00c9tape 1 : filtrer les donn\u00e9es interactivement<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/construire-un-tableau-de-bord-interactif-dans-qgis-analyse-dynamique-avec-data-plotly-widgets-et-expressions\/#Etape_2_creer_un_graphique_interactif_avec_Data_Plotly\" >\u00c9tape 2 : cr\u00e9er un graphique interactif avec Data Plotly<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/construire-un-tableau-de-bord-interactif-dans-qgis-analyse-dynamique-avec-data-plotly-widgets-et-expressions\/#Etape_3_afficher_des_indicateurs_dynamiques_avec_des_etiquettes\" >\u00c9tape 3 : afficher des indicateurs dynamiques avec des \u00e9tiquettes<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/construire-un-tableau-de-bord-interactif-dans-qgis-analyse-dynamique-avec-data-plotly-widgets-et-expressions\/#Objectif-2\" >Objectif<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/construire-un-tableau-de-bord-interactif-dans-qgis-analyse-dynamique-avec-data-plotly-widgets-et-expressions\/#Methode\" >M\u00e9thode<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/construire-un-tableau-de-bord-interactif-dans-qgis-analyse-dynamique-avec-data-plotly-widgets-et-expressions\/#Resultat\" >R\u00e9sultat<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/construire-un-tableau-de-bord-interactif-dans-qgis-analyse-dynamique-avec-data-plotly-widgets-et-expressions\/#Variante_optionnelle\" >Variante (optionnelle)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/construire-un-tableau-de-bord-interactif-dans-qgis-analyse-dynamique-avec-data-plotly-widgets-et-expressions\/#Etape_4_organiser_lespace_de_travail\" >\u00c9tape 4 : organiser l\u2019espace de travail<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/construire-un-tableau-de-bord-interactif-dans-qgis-analyse-dynamique-avec-data-plotly-widgets-et-expressions\/#En_resume\" >En r\u00e9sum\u00e9<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/construire-un-tableau-de-bord-interactif-dans-qgis-analyse-dynamique-avec-data-plotly-widgets-et-expressions\/#Bonus_astuces_avancees\" >Bonus : astuces avanc\u00e9es<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/construire-un-tableau-de-bord-interactif-dans-qgis-analyse-dynamique-avec-data-plotly-widgets-et-expressions\/#A_suivre%E2%80%A6\" >\u00c0 suivre\u2026<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Cas_dusage_suivi_des_dechets_sur_les_plages\"><\/span>Cas d\u2019usage : suivi des d\u00e9chets sur les plages<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Nous reprenons notre couche <code>releves_dechets<\/code> comportant :<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Champ<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td>plage<\/td><td>Nom de la plage<\/td><\/tr><tr><td>type_dechet<\/td><td>Cat\u00e9gorie de d\u00e9chet<\/td><\/tr><tr><td>quantite<\/td><td>Quantit\u00e9 observ\u00e9e<\/td><\/tr><tr><td>date_obs<\/td><td>Date de l&rsquo;observation<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Objectif : permettre \u00e0 un utilisateur de filtrer les donn\u00e9es (par plage, date\u2026) et de voir imm\u00e9diatement :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Une carte actualis\u00e9e<\/li>\n\n\n\n<li>Un graphique dynamique<\/li>\n\n\n\n<li>Des indicateurs mis \u00e0 jour<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Etape_1_filtrer_les_donnees_interactivement\"><\/span>\u00c9tape 1 : filtrer les donn\u00e9es interactivement<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Ouvrez la <strong>table attributaire<\/strong> de la couche (clic droit &gt; \u00ab\u00a0Ouvrir la table attributaire\u00a0\u00bb).<\/li>\n\n\n\n<li>Cliquez sur l\u2019ic\u00f4ne <strong>entonnoir<\/strong> pour activer le filtre.<\/li>\n\n\n\n<li>Cliquez ensuite sur l\u2019ic\u00f4ne <strong>formulaire de filtrage<\/strong>.<\/li>\n<\/ol>\n\n\n\n<p>Les champs appara\u00eetront avec les widgets d\u00e9finis (valeurs uniques, plage de dates\u2026). S\u00e9lectionnez les valeurs d\u00e9sir\u00e9es et cliquez sur \u00ab\u00a0Appliquer le filtre\u00a0\u00bb.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Ce filtre ne modifie pas directement la carte, mais vous pouvez :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>utiliser uniquement les entit\u00e9s s\u00e9lectionn\u00e9es dans Data Plotly,<\/li>\n\n\n\n<li>ou cr\u00e9er une <strong>couche virtuelle<\/strong> avec un <code>SELECT * FROM releves_dechets WHERE ...<\/code>.<\/li>\n<\/ul>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Etape_2_creer_un_graphique_interactif_avec_Data_Plotly\"><\/span>\u00c9tape 2 : cr\u00e9er un graphique interactif avec Data Plotly<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Ouvrez le panneau <strong>Data Plotly<\/strong> (menu Vue &gt; Panneaux &gt; Data Plotly).<\/li>\n\n\n\n<li>Choisissez le type de graphique (ex. Bar chart).<\/li>\n\n\n\n<li>Configurez :\n<ul class=\"wp-block-list\">\n<li><strong>X Axis<\/strong> : <code>type_dechet<\/code><\/li>\n\n\n\n<li><strong>Y Axis<\/strong> : <code>quantite<\/code><\/li>\n\n\n\n<li><strong>Layer<\/strong> : votre couche filtr\u00e9e<\/li>\n\n\n\n<li>Cochez <strong>Use only selected features<\/strong> si vous filtrez via la table<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p>D\u00e8s que vous modifiez le filtre ou s\u00e9lectionnez d&rsquo;autres entit\u00e9s, le graphique se met \u00e0 jour.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Etape_3_afficher_des_indicateurs_dynamiques_avec_des_etiquettes\"><\/span>\u00c9tape 3 : afficher des indicateurs dynamiques avec des \u00e9tiquettes<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Pour \u00e9viter les scripts complexes ou les vues temporaires, QGIS permet d\u2019afficher des <strong>statistiques dynamiques directement sur la carte<\/strong>, sous forme d\u2019\u00e9tiquettes attach\u00e9es aux entit\u00e9s.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Objectif-2\"><\/span>Objectif<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>Afficher, uniquement pour les entit\u00e9s s\u00e9lectionn\u00e9es :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Le nom de la plage<\/li>\n\n\n\n<li>Le total de d\u00e9chets observ\u00e9s sur cette plage<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Methode\"><\/span>M\u00e9thode<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Activez les <strong>\u00e9tiquettes<\/strong> sur votre couche.<\/li>\n\n\n\n<li>Dans l\u2019expression de l\u2019\u00e9tiquette, utilisez :<\/li>\n<\/ol>\n\n\n<div class='stb-container stb-style-download stb-caption-box'><div class='stb-caption'><div class='stb-logo'><img class='stb-logo__image' src='data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN\/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz\/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH\/w\/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA\/g88wAAKCRFRHgg\/P9eM4Ors7ONo62Dl8t6r8G\/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt\/qIl7gRoXgugdfeLZrIPQLUAoOnaV\/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl\/AV\/1s+X48\/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H\/LcL\/\/wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93\/+8\/\/UegJQCAZkmScQAAXkQkLlTKsz\/HCAAARKCBKrBBG\/TBGCzABhzBBdzBC\/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD\/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q\/pH5Z\/YkGWcNMw09DpFGgsV\/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY\/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4\/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L\/1U\/W36p\/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N\/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26\/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE\/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV\/MN8C3yLfLT8Nvnl+F30N\/I\/9k\/3r\/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt\/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi\/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a\/zYnKOZarnivN7cyzytuQN5zvn\/\/tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO\/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3\/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA\/0HIw6217nU1R3SPVRSj9Yr60cOxx++\/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3\/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX\/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8\/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb\/1tWeOT3dvfN6b\/fF9\/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR\/cGhYPP\/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF\/6i\/suuFxYvfvjV69fO0ZjRoZfyl5O\/bXyl\/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o\/2j5sfVT0Kf7kxmTk\/8EA5jz\/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5\/wAAgOkAAHUwAADqYAAAOpgAABdvkl\/FRgAADcFJREFUeNrsmnmQXNV1xn\/3Lf1eb9OzdM+qGe2DFgZFIGQIizFGBpRAgQUhmDUOqQI7qYIirtguAgHbyBUbO3FsEpcTIixMICKgsDgskYyNWGwEaLEQoA1mn+np6Z6ZXt9288d9o8E2IhKSUymXXtWrN931+vX97vnOOd93eoSUkt+FQ+N35DgO5DiQ39JhfNCbQojfeC+ia0RtC8\/zKdUclvUspVQus3hJD\/nxMfoGhwkqU3zi\/NV2NF7X+OSjD2WSDem6IJAWgKGJ2kR+fPLiNX+UrZaL45ue+XHViCbo7GijpaWVHdu3kYhH2frGTmzTQAiB5\/u4fvAba\/mgAmUczS4IIfA9j+pUIbpo4bwerLozS1b6FLtjwfJP\/sU3WnNTtVix7JgEAUnLcNPJSAlqw6X+\/W\/0nHrGa8ItbRkZHNjpNjVVP2jzjjoih3VIKE5MGF2zu1bH5yy9WrZ0n5N1zMzOgTFGXxrAK1XA80FK8APwPAuBZdrRxpbGhiWL5i6+qi0psk0L9m1u0ksP\/PzFF5+ORdu8j7ypHxSmD6eWR6nmsmJZz6KTV11y+z6v8Q\/2lURd\/0gOr1gEASBACAUiEBAEClQQQAB4EnyJmUgxb14ny+emJhdEhp7a9Oj6r7z82vbdlqGjadoRUeuIgFimQaXqcO6qVZfPP++P7970zviCvXv2EggDYgkQEiRhFMK\/gzAivgShhfVFqKsPeGDE6jj1lKV8+pTY3lf+\/e9v+4+NTz1sGTpSSpxjDUQHIgL90muuvTl65pV3\/dvz22Pl0QHwqmqBdh1omtp1yftASBUFCUgdhD4DBB00AzQbtCQdJ53IFy9bUHln\/V\/f\/t17f\/BtobbgsIAcdvnVBNql11x7q7HqhrXrt\/bFyq4Ltg1GBHwPnKpa7K9uSUgzDTQLTAuMXzvNOMQbobmTgckodzyvRRfe9J27P3\/TDV8QR7K+w71x1YWrr01ccMOdD768z3Q8D+oaIJoEwwRdA68CgaeiIlA5IoR6rZkKsG6BFlGgtBBErAHqZ0FmNjS3MZ6rcMcjA+aCq+6647I1l15\/TIEsnNu1fPEVf\/61B7b2216tBpapAMTqwIqCpgMBuI56pBAc5JcIgei2AqJH1GnGQhDt0NQJdRnFX1Ekv38\/X3\/kHfvsz962dkn33BXHBIita6k1N976lScOVNvL+TxYEbU4ISBiQaIhBKNB4IAMFO\/F+2hlRn6VVmZ0BkS6E1Jp0CRUJ6A4BrLE8N5e1m+tNt\/wl3d+LaJRd9RAzr\/o4iv3pntW7enPqcV6rtps3QijkoREWi2QAHxXRUDTFRjdACMKhq0iEYlCvAEa2iHTCXXNoAmoFmBqFKbyUKtCRPCL7ft5W19yzqcvv\/yqowLSEDXTs89aff2W\/ZMRKXTQTdUXPE+BMUy104l6RQ3DVGCmaRcJIxCJQTSuSnS8HhrboLkTUs1qBZVxmByFYgGcmqp8AgLf55lt2Uj32Zdc15CwMkcMZLr4nnb2OasGY3NOGslOQuCD1ELa6ApMEIBpQiwO9RlIpsE01FlzYXAA+nphYBgGRqEqoKkDWmere5FQzYcg8uBUQPozC9AE\/UN5ekVHz2lnnPVJAP0QUsY4hPpAB635hGXn7iiaUemEVPJDBaELRR3fn8kBTVfn2ADs3UU608Q5n+gJfq+7q2hEkuweLie39DliXxHIpBSdSuMwOQKlvIoE8mDFRqrK51Wr7B4OYiuWnf4p45n\/3uBJ6R+R1upsb+5KdC1ZPjRUUHmhh7yXngLkS1V28VUuWLb68vwEl328x7vzxst3z25t3O041UKlUsZz\/fqi0Jf+8w5v0Xef7dXdhAVuXtHJdZQqQMxEIwjRiIDBbJFgVueSlkx9+0C20HdEQKxEalb\/hN+RHehXOy+tsGfoICKqZ7ieAumbIAX09XLN6tO9H9y8ZrOpadt937ftaMw2IlHGstmRYGL8vS+ubBwW1eCcbz28UyedVJ9HqggRyhv5vqjogqHcBOX5mXnp1vZ5hwKiHQpdqr5pbtUVLf5oPxRzMDEGk+NQmoRqRckOEYHAAC+AwX46jTJ3XX3udsvQt2u6niyVy9ozzz777qZNmw7ohqEnG9PJ4aHc63+2IrVzaaMLY7kwp3QwNBVhXczQiwC0AK84RWDVZ1pa2+dHxBHI+PbWNM2tbe0emqBcBGmDqIKhQyXs0tN9wTRVjozkuOSiE91ZDfFfOq5re57v33LLLU+88MILL0spWbly5elr1679w3hdg21r3q4LTuk4cdejbxs0N4AIVbEfyn4pFX0DBwIXfJeJsosVT2Yy6frDr1rxRBzTsut8N1C77fvqwbUa1EpQmlDRKYxCIQfj41Aq0t3ZUiqWSmXTjMQefvjhnevWrXs+lUpN1tXVTT700EPPb968eXdbW2scoU0snF0\/RSwOEQNMoapV4IDngF8BWQXpKpCapOh4eGh2Ll84fCD7DvQKTdc06fvKR\/jB+67Tpw+uD46jzkBD001ZLleo1WpaLpcrtbe312zbJpFI0N3d7dRqtXIsFtNsOyo14fqYDkQkmBI0XxUS6QAuCB90qShnGkhdBylFzUMcNrUcX0rfccqGJpTkkHJGemtGqJ1CEWjaYCchoTFWFvHAd+yR0dHKeeedd1JbW9uSe++9902AtWvXLlq2bNlix3EqqWQyvufA1iQTg+CmVNWLWWCb4QZ5SiH4QWjGfBJxG6EJT36Axv7QqpUdHc4m53gqH9BVH9EjKi+08KqHeWInIGPz3N5y5PpPRU7Ij2RfyLS2NS6PRP5kzZo1L5umycqVK0+fNWtWKvC93JSr9Tz3zphFRwvogXKMEUt9l9BnzJgbVsaKT6o+xlilWDhiz54bG+1tCGp5YnUNyECp14NSPIzK9NWwYXYLL40GbHyPkz8zp360f3jorVRjuu6mz33uoqhtS8dxKp7r5QzT6P76gz9esW2kBMuWQtVRKsBH5YOuK2GqaYoJToDWbBExKpPZ4cHeI9ZaTnmqvz1lDqcbGkGG0RBm6BX1UAFbilbJDDTPIuhcxB0bJuwf7qhd0JhuPNOUTiQ3MlgcHx0q6tI1y7XaGV\/6\/mMX3rPuKZtUQjWKmAmJKMQjilo6qslqEiwDYhFaZ6exykO92YH+A0cckYGBwV53vO\/t1ubuxWO5ogq5mAagK2MUTUB9M6RnQTQFEgo5nb\/63jZ7Q2dwxkUrO09ePDc9JUSZ7W\/9PLlhy87ortGqoHOhyoH8BNQnFQBfU0VEhtJfovIDQUeTRXTXuwdGsvm+IwZS8ynk3nvzxRNWrLz4l\/uyGlKbAWPYEK1TIJo6lCdxfZgcA6+Al4rxyr4R8crubTFMPQZVqGYhakDnQtX0KhOQL4Q6TVUmNA1cpXzRNZAawogwP1IJ9r7005\/VoPCRZPxrL2\/ZPD9e3d+STs8oXyOqLG6qBdIdSsK7nuopuUHIj4BbhXQjzOmCznaY1QlzFkBjE1QKKieEptTuVBEcX\/UqXSg6aeHgQkpaMnHmTR048PqLWzZ\/ZD8ykM3vGN31kyc\/fupcVal0G2IpaGiFTDskGxQd8iOQG4CJUaiVlX5ya0oMTjdTNyynTlndE4T0qVSgWFHPCQK1Iss46P1PazYZfOaxJ\/vzk9uPxiF6Gzc8eP\/HMvnd3Yvngx6HhhbIdCiX53gKxNgAFLJQKYemy1eJ7PsKgOMoCaJHVJXzQ60WhHlQqkDFC1\/Lg1ZhTlcjHxt\/8+3HfvTAOlUBjsLqFqbKuzd876v33Hh+V7W+eyEkmpX78zzIj4aRGINqWe289FUTDRuZUsdeOFExwl4B+E44hfTU\/aUK1EJL4AVEklGuaqe28W\/vvGeiWtt9LKYozitbt23c+8R37rvtmh6sTBNM1WAiC+NDSmvVyqoKSVfJjMBXC\/RcpZ2kFyqD0AIYlhoxShlqudDflGpQdiBicV1PM333ffNffvHG9scA51gAkUDuX++779vu0\/c8\/uUL01jOJAz0qSpVK4W764bRCDVT4M6o1yCcFwotVAiWUtL4KipuTUWl4iEcwRXL2ok+\/v3HHvnRA9+SMMYhZMlHGtBVXH\/v3bf\/zZfEk199\/NbzEtiiCoUC+LUQxPTi3VAnTQPxQqc3PXHUFb0MWzU9gSoCpRJmNMpnlreTefIf\/3PdPd\/4ctn19x3zafxB56iLhdf96Q1f6Dr3s9fev3nQ2rOnN1SqMxPSg5NGjbBHmBCJKAOl6+Ec21dj1kACJm1dHVxxctrJPvVP6x754f3frAVyzyEpcjRD7F8bsrSevvKUSy+6\/ubP7yy1LX7u1XdFLptH+o7a5Wm3p2nKHkdCA2boytKGQIUOdQmbMxa00+Pvf+sn6\/\/uH159bdtGCUMfRqdjBWQaTCwZs5atueLKqzM9564+UE51vjNQ1AayExSKJXw3rJZ6CMSyIGqjxywa6uK0ZOLMr9OCzlp\/X\/61p\/\/rqUceWj9RcbYD5f8tJ44lkPcfdS2NqeW\/f9bZq1KzFp0aa1t0QlHEmkfKwnb1mAg0E2maGKaGqbmyJSarca+QLR3Y8XZh385XX\/nZT58dKUy+Dkwd9o9lvyUgB38LMgWts7s6FiTqG+fokVhbfWM6bVh2DCEInGo5n8uO+dXS0FQ+9957fUN7XBg+nNL6fw3k16lnAaErI9TmOEDtcMrpMQFy\/B8GjgM5DuQ4kP+3x\/8MAHWpUzAU7qJ7AAAAAElFTkSuQmCC' alt='img'\/><\/div><div class='stb-caption-content'> <\/div><div class='stb-tool'><\/div><\/div><div class='stb-content'><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>if(\n  is_selected(),\n  \"plage\"  || '\\n'  ||  \n  'Total d\u00e9chets : ' || \n  aggregate(\n    'suivi_plages_dechets',\n    'sum',\n    \"quantite\",\n    filter:= \"plage\" = attribute(@parent, 'plage')\n  ),\n  ''\n)\n<\/code><\/pre>\n\n\n\n<p><\/div><\/div>\n\n\n\n<p>Cette expression v\u00e9rifie si la plage est s\u00e9lectionn\u00e9e (<code>is_selected()<\/code>), puis affiche :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Son nom<\/li>\n\n\n\n<li>La somme des d\u00e9chets pour cette plage, calcul\u00e9e dynamiquement via <code>aggregate()<\/code>.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Resultat\"><\/span>R\u00e9sultat<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>Quand vous s\u00e9lectionnez une ou plusieurs plages, l\u2019\u00e9tiquette s\u2019affiche <strong>uniquement sur celles s\u00e9lectionn\u00e9es<\/strong>, avec leur total de d\u00e9chets respectif.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Variante_optionnelle\"><\/span>Variante (optionnelle)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Vous pouvez aussi filtrer via la <strong>table attributaire<\/strong> ou un <strong>formulaire de recherche<\/strong>, et les \u00e9tiquettes r\u00e9agiront automatiquement \u00e0 la s\u00e9lection.<\/p>\n\n\n\n<figure class=\"wp-block-video aligncenter\"><video height=\"992\" style=\"aspect-ratio: 1674 \/ 992;\" width=\"1674\" controls src=\"https:\/\/www.sigterritoires.fr\/wp-content\/uploads\/2025\/06\/20250617_144155.mp4\"><\/video><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Etape_4_organiser_lespace_de_travail\"><\/span>\u00c9tape 4 : organiser l\u2019espace de travail<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Cr\u00e9ez une interface de tableau de bord :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u00c0 gauche<\/strong> : table attributaire ou filtres<\/li>\n\n\n\n<li><strong>Au centre<\/strong> : carte<\/li>\n\n\n\n<li><strong>En bas<\/strong> : graphique Data Plotly<\/li>\n\n\n\n<li><strong>\u00c0 droite<\/strong> : compteurs\/statistiques (via cadres texte)<\/li>\n<\/ul>\n\n\n\n<p>Enregistrez votre disposition via <strong>Projet &gt; Enregistrer la disposition<\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"En_resume\"><\/span>En r\u00e9sum\u00e9<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u00c9l\u00e9ment<\/th><th>Outils utilis\u00e9s<\/th><\/tr><\/thead><tbody><tr><td>Filtrage<\/td><td>Table attributaire \/ Formulaire<\/td><\/tr><tr><td>Graphiques r\u00e9actifs<\/td><td>Data Plotly<\/td><\/tr><tr><td>Statistiques dynamiques<\/td><td>Expressions \/ Widgets personnalis\u00e9s<\/td><\/tr><tr><td>Interface utilisateur<\/td><td>Organisation de l\u2019espace de travail<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Bonus_astuces_avancees\"><\/span>Bonus : astuces avanc\u00e9es<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cr\u00e9ez une <strong>couche virtuelle<\/strong> avec un filtre dynamique pour centraliser les donn\u00e9es affich\u00e9es<\/li>\n\n\n\n<li>Utilisez les fonctions <code>CASE<\/code>, <code>regexp_match()<\/code> pour des regroupements avanc\u00e9s<\/li>\n\n\n\n<li>Testez les plugins : <strong>Quick Filter<\/strong>, <strong>Attribute Table Filter<\/strong>, <strong>Input Widgets<\/strong><\/li>\n\n\n\n<li>Envisagez un projet <a href=\"https:\/\/www.sigterritoires.fr\/index.php\/debuter-avec-postgrespostgis\/\">PostgreSQL\/PostGIS<\/a> avec des vues mat\u00e9rialis\u00e9es filtrables par date ou site<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"A_suivre%E2%80%A6\"><\/span>\u00c0 suivre\u2026<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Dans un prochain article, nous verrons comment <strong>transformer ce tableau de bord QGIS en une interface web<\/strong> avec :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Export vers <strong>QGIS Server<\/strong> ou <strong>Lizmap<\/strong><\/li>\n\n\n\n<li>Tableau de bord en ligne filtrable (plage, date\u2026)<\/li>\n\n\n\n<li>Int\u00e9gration dans un site participatif ou citoyen<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Objectif Cr\u00e9er dans QGIS une interface de suivi dynamique avec : Le tout sans quitter l\u2019interface QGIS ! Cas d\u2019usage : suivi des d\u00e9chets sur les plages Nous reprenons notre couche releves_dechets comportant : Champ Description&hellip;<\/p>\n","protected":false},"author":1,"featured_media":14304,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"give_campaign_id":0,"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"sfsi_plus_gutenberg_text_before_share":"","sfsi_plus_gutenberg_show_text_before_share":"","sfsi_plus_gutenberg_icon_type":"","sfsi_plus_gutenberg_icon_alignemt":"","sfsi_plus_gutenburg_max_per_row":"","_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1945,62],"tags":[3364,3378,279,58,3380],"class_list":["post-14236","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-pluigin","category-qgis-2","tag-data-plotly","tag-etiquettes-dynamiques","tag-plugin","tag-qgis","tag-tableau-de-bord"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2025\/06\/tableau_de_bord.jpg?fit=1278%2C812&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/p6XU0A-3HC","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/posts\/14236","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/comments?post=14236"}],"version-history":[{"count":0,"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/posts\/14236\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/media\/14304"}],"wp:attachment":[{"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/media?parent=14236"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/categories?post=14236"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/tags?post=14236"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}