Skip to content
Snippets Groups Projects
Select Git revision
  • master default protected
1 result

code

  • Clone with SSH
  • Clone with HTTPS
  • Forked from Vuillemot Romain / INF-TC1
    Source project has a limited visibility.

    Analyse de la qualité de l'eau courante en France et son évolution entre 2018 et 2024

    Par Lucas Besson et Paul Gilarès.

    Ce projet vise à analyser la qualité de l'eau courante en France et son évolution entre 2018 et 2024, en se basant sur divers indicateurs tels que le pH, le chlore, les nitrites, les nitrates, les métaux lourds et les pesticides.

    L'analyse est réalisée à l'échelle départementale pour fournir une évaluation complète et détaillée de la qualité de l'eau au fil du temps afin d'identifier les tendances et les zones nécessitant une attention particulière pour garantir la sécurité sanitaire des populations locales.

    Une attention particulière a été portée à l'élaboration d'un score de qualité de l'eau.

    🎥 Regarder la vidéo de démonstration de l'application sur YouTube

    Les slides de la présentation de notre projet sont disponibles dans le directory slides présentation projet. (Vous y trouverez une présentation de nos réflexions, notre maquette papier, notre exploration de la donnée, nos résultats, etc.)

    0. Présentation rapide des résultats

    Nous obtenons des résultats globalement rassurants concernant la qualité de l'eau en France.

    Les scores annuels départementaux sont globalement élevés, ce qui est rassurant mais attendu, car les anomalies sont atténuées par les moyennes annuelles et départementales (Cf. 4. Calcul des scores de qualité de l'eau). La qualité de l'eau en France est globalement stable depuis 2018.

    Les départements de la Seine-Saint-Denis et du Val-de-Marne font toujours partie du Top5 des meilleures eaux depuis 2018.
    À l'inverse, la Marne possède la moins bonne qualité d'eau de France depuis 2022 et de loin. L’Aisne est également sur le podium des pires eaux depuis 2022.

    1. Etat de l'art des visualisations

    Lors de la phase de réflexion et de choix du sujet, nous sommes tombés sur plusieurs sites et visualisations de données liées à l'eau intéressantes, dont 2 en particulier qui étaient liées à la qualité de l'eau potable en France et qui nous ont inspiré pour notre projet.

    • Une carte intéractive qualité de l'eau proposée par UFC que choisir, qui permet de voir la qualité de l'eau selon plusieurs critères pour une ville sélectionnée via une barre de recherche le tout à l'échelle des points de surveillance.
      Cependant cette visualisation ne permet l'étude qu'à l'échelle communale, ne permet pas la comparaison directe entre 2 zones (ex : villes, départements, régions) en France hormis à l'échelle d'une même ville entre ses différents points de surveillance et n'indique pas l'évolution de la qualité de l'eau.

    • Plusieurs cartes proposées par Lyzo, en particulier celle ci, qui propose une étude de la qualité de l'eau à l'échelle communale (uniquement).
      Cette visualisation n'indique pas non plus l'évolution de la qualité de l'eau.

    Ces 2 visualisations proposent donc une étude de la qualité de l'eau à l'échelle communale se basant sur le taux de prélèvements non conformes (et/ou le taux de prélèvements conformes pour certains paramètres) et donc ne proposent pas de score à proprement parlé. Elles ne proposent pas non plus d'étude de l'évolution de cette qualité.

    Nous allons donc dans ce projet nous pencher particulièrement sur l'élaboration d'un modèle de calcul de scores, plus parlant dans un but de sensibilisation des populations, tout en permettant une analyse départementale, comparative temporellement et géographiquement, et avec la possibilité de se concentrer sur certains paramètres, pour une analyse et une comparaison plus approfondies.

    2. D’où vient la data ?

    Les données principales utilisées pour ce projet proviennent du site data.gouv.fr, la plateforme des données publiques françaises, qui fournit les résultats du contrôle sanitaire de l'eau du robinet. Ces données incluent divers indicateurs de qualité de l'eau, permettant une analyse approfondie de son évolution entre 2018 et 2024.

    D'autres données de la Sandre et de data.gouv.fr nous serviront à compléter ces données. (voir ci-après)

    3. Prétraitement de la data

    Etat des lieux de la data

    Pour chaque année, nous avons récupéré un fichier Zip sur data.gouv.fr contenant entre autres un fichier csv contenant des informations sur les prélévements de l'année et un autre contenant les resultats de ces prélévements :

    • UDI_PLV : une ligne par prélèvement avec date, lieu, coordonnées, référence du prélèvement, etc
    • UDI_RES : une ligne par paramètres testé avec codes du paramètre, la valeur mesurée, référence du prélèvement, etc.

    Il nous manquait alors une table des correspondances entre les paramètres et leurs codes d'identification (seule information disponible dans les fichiers de data.gouv), que nous avons trouvé sur le site de la Sandre (Service d'administration nationale des données et référentiels sur l'eau), afin d'interpréter les codes présents dans les fichers.

    Nous nous sommes aussi aperçu que les coordonnées des lieux étant encodées en Lambert 93 et non en GPS, que certaines lignes n'avaient pas de coordonnées et même que d'autres avaient leurs coordonnées inversées.
    Pour les lignes sans coordonnées, nous nous sommes servis d'une base de données des communes françaises trouvée sur data.gouv.fr pour compléter la data en ajoutant pour ces lignes les coordonnées GPS de la commune correspondante (à défaut de celles du point de prélèvement).

    Prétraitement et choix des indicateurs

    Vous trouverez le code que nous avons utilisé pour prétraiter les données dans le directory src.

    Pour chaque année, les fichiers de données UDI_RES et UDI_PLV ont donc été chargés et nettoyés, avec normalisation des formats et conversion des valeurs numériques et des coordonnées.

    Une jointure a été effectuée sur ces fichiers en utilisant la référence commune referenceprel. Les doublons ont été supprimés puis les lignes ont été filtrées selon les paramètres/indicateurs qui nous intéressaient. Enfin, les coordonnées GPS inversées ont été corrigées et les valeurs manquantes complétées en fusionnant avec les coordonnées des communes.

    Grâce à une analyse de la littérature mais également de la densité nos données (Cf. graphiques d'exploration des données dans les slides, directory slides présentation projet), nous avons choisi de concentrer notre étude sur les paramètres/indicateurs suivants :

    • pH
    • Chlore
    • Nitrites
    • Nitrates
    • Pesticides
    • Métaux lourds
      • Plomb
      • Nickel
      • Mercure
      • Cadmium
      • Arsenic

    Tables obtenues

    Les tables obtenues (une par année) à la suite de ce prétraitement contiennent alors une ligne par paramètre (sélectionnées selon notre intérêt) par prélèvement, avec, entre autres, la date et la référence du prélèvement, le lieu (département, ville, point de surveillance, coordonnées gps) et la valeur du paramètre ainsi que son unité et son seuil.

    PS : Les attributs de cette table ne seront finalement pas tous utilsés dans l'application finale. En effet, nous avons préparé le terrain pour pouvoir mener des analyses plus poussées (Cf. 6. Rendu final et ambition future).

    4. Calcul des scores de qualité de l'eau

    Une fois la donnée propre et complète, il est alors possible de passer à une étape cruciale du projet, le calcul d'un score de qualité de l'eau.

    Fonctionnement du calcul

    Le calcul des scores est effectué ligne par ligne pour chaque point de surveillance (cdpointsurv) et chaque paramètre (cdparametre) :

    D'abord on calcule les valeurs moyennes des paramètres annuellement pour chaque point de surveillance (i.e. si il y a eu plusieurs prélèvements au cours de l'année pour le même point de surveillance alors la valeur retournée est la moyenne des valeurs du paramètre au cours de cette année).

    Les données sont ensuite pivotées pour obtenir une ligne par point de surveillance avec les valeurs moyennes des paramètres.

    Les valeurs manquantes après le pivot sont remplacées par 0 (si un paramètre n'a pas été prélevé cette année, alors on lui donne arbitrairement la valeur 0, dans son unité, comme si l'eau ne contenait aucune trace de ce paramètre).

    Enfin, les scores pour chaque paramètre sont calculés en utilisant une fonction sigmoïde, avec des pondérations spécifiques pour les nitrites, nitrates, et métaux lourds.

    Indicateurs utilisés et seuils réglementaires

    Les indicateurs suivants ont été sélectionnés pour évaluer la qualité de l'eau, en se basant sur des seuils réglementaires (ARS et/ou OMS) :

    • pH : Plage optimale entre 6.5 et 8.5.
    • Chlore : Seuil à 5.0 mg/L.
    • Nitrites : Seuil à 0.5 mg/L.
    • Nitrates : Seuil à 50.0 mg/L.
    • Pesticides : Seuil à 0.5 µg/L.
    • Métaux lourds
      • Plomb : Seuil à 5.0 µg/L.
      • Nickel : Seuil à 20.0 µg/L.
      • Mercure : Seuil à 1.0 µg/L.
      • Cadmium : Seuil à 5.0 µg/L.
      • Arsenic : Seuil à 10.0 µg/L.

    Normalisation des scores

    Les valeurs mesurées sont normalisées en utilisant une fonction sigmoïde. Cette approche permet de lisser la transition entre les valeurs et d'obtenir des scores compris entre 0 et 1. La fonction sigmoïde est définie comme suit :

    \text{score} = \frac{1}{1 + e^{-10 \left(\frac{\text{valeur}}{\text{valeur\_max}} - 0.5\right)}}

    La fonction sigmoïde a été choisie pour sa capacité à transformer les valeurs de manière non linéaire, ce qui permet de mieux refléter les variations autour des seuils critiques. Elle offre une transition douce et évite une gestion binaire des scores (0 ou 1) et d'avoir un score maximal pour une valeur à peine en dessous du seuil et un score minimal pour une valeur à peine au dessus du seuil, reflétant alors mieux la réalité.

    Pondérations des scores

    Un score pour chaque indicateur est donc calculé avant d'être regroupés dans des scores plus généraux. Pour ce faire, nous pondérons les différents scores en fonction de l'importance relative de chaque indicateur pour la qualité globale de l'eau.

    Tout d'abord, nous avons regroupé en deux catégories les Nitrites & Nitrates et les Métaux Lourds. Les pondérations permettent de mieux refléter l'impact potentiel de chaque élément dans son groupe, les nitrites étant par exemple environ 10 fois plus toxiques que les nitrates, et le mercure étant environ 5 fois plus toxique que le nickel.

    • Nitrites & Nitrates : Pondération de 10 pour les nitrites et de 1 pour les nitrates.
    • Métaux Lourds : Pondération de 5 pour le mercure, 4 pour l'arsenic et le cadmium, 3 pour le plomb et 1 pour le nickel.

    Ensuite, afin de calculer un score global de qualité de l'eau, nous avons pondérés les différents scores comme suit :

    1. Métaux Lourds : Pondération très élevée (3.0), en raison de leur toxicité et de leurs effets cumulatifs.
    2. Pesticides : Pondération élevée (2.5).
    3. Nitrites & Nitrates : Pondération élevée (2.0), en tenant compte de la toxicité plus élevée des nitrites.
    4. pH : Pondération modérée (1.5).
    5. Chlore : Pondération faible (1.0).

    Calcul du score global

    Enfin, le score global est calculé comme la moyenne pondérée des scores de chaque catégories. Cette approche permet à nouveau de prendre en compte l'importance relative de chaque indicateur tout en fournissant une évaluation globale de la qualité de l'eau.

    Tables finales

    Les tables finales sont les fichiers csv score_sigmoid, disponibles dans le directory backend > data.

    5. Analyser les scores

    Chaque paramètre est noté entre 0 et 1 :

    • 1 = Qualité optimale ✅
    • 0 = Pollution élevée ❌

    Le score global, moyenne pondérée des scores des paramètres est également noté entre 0 et 1

    Score Interprétation
    ≥ 0.99 Excellente qualité, conforme aux normes ✅
    ≥ 0.95 Très bonne qualité
    ≥ 0.9 Bonne qualité
    ≥ 0.85 Plutôt bonne qualité
    ≥ 0.8 Acceptable
    ≥ 0.7 Acceptable dégradé, à surveiller
    ≥ 0.6 Médiocre, polluant notables
    ≥ 0.5 Mauvaise qualité, non conforme aux normes
    ≥ 0.4 Très polluée, dangereuse à la consommation
    0.4 < Extrême pollution, ne pas consommer ❌

    🔍 Exemple d’analyse :

    • Si le score global = 0.87, l’eau est de plutôt bonne qualité mais peut tout de même avoir des teneurs un peu élevées en certains paramètres, sans forcément dépasser les seuils.
    • Analyser les scores individuels permet d’identifier les causes exactes du problème.

    6. Rendu final et ambition future

    Afin d'accéder à l'application, il vous faudra fork ce gitlab puis lancer le back et le front en parallèle dans deux terminaux différents :

    Lancer le back

    Allez dans le dossier backend et rentrez les commandes suivantes :

    npm install

    node index.js

    Lancer le front

    Pour lancer le front, rentrez les commandes suivantes dans le dossier frontend :

    npm install

    npm run dev

    L'application

    Vous arriverez alors sur notre application, vous n'aurez plus qu'à choisir les paramètres que vous souhaitez analyser et observer les résultats à l'échelle du pays et à l'échelle départementale, ainsi que leurs évolutions.

    Comme évoqué dans la partie 3. Prétraitement de la data, nous avons pris soin de préparé la data pour pouvoir mener des analyses plus poussées, que nous n'avons pas eu le temps d'implémenter dans le temps imparti de ce projet. Les prochaines étapes consisteraient alors en l'étude la qualité de l'eau à l'échelle communale voire même directement à celle du point de surveillance et sa zone d'influence, le tout mensuellement et plus simplement annuellement, avec par exemple des informations supplémentaires sur les 3 derniers prélèvements en date de la commune. Une barre de recherche à la maille de la commune pourrait également être envisageable, avec plus tard des systèmes d'alerte en fonction des résultats des prélèvements.

    7. Sommaire des directory

    • backend : code du backend et la data finale (fichiers csv score_sigmoid).
    • data : directory vide, nous servait à accueillir les fichiers intermédiaires pendant le traitement, pour la plupart inscrits dans le gitignore car très volumineux.
    • frontend : code du frontend.
    • slides présentation projet : slides de présentation du projet, avec réflexion, maquette papier, exploration, résultats, etc.
    • src : code de traitement des données, calcul des scores, tests et explorations.