1. But du projet
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.
2. D’où vient la data ?
Les données 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.
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.
Preprocessing et choix des indicateurs
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 lignes ont été filtrées selon les paramètres/indicateurs qui nous intéressaient. 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. Enfin, les doublons ont été supprimés du fichier final.
Grâce à une analyse de la littérature mais également de la densité nos données, 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
Table obtenue
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 :
- Métaux Lourds : Pondération très élevée (3.0), en raison de leur toxicité et de leurs effets cumulatifs.
- Pesticides : Pondération élevée (2.5).
- Nitrites & Nitrates : Pondération élevée (2.0), en tenant compte de la toxicité plus élevée des nitrites.
- pH : Pondération modérée (1.5).
- Chlore : Pondération modérée (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.
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 consisteront 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. Un système de recherche à la maille de la commune est également envisagé, avec plus tard des systèmes d'alerte en fonction des résultats des prélèvements.
Démonstration d'utilisation de l'application
Voici une vidéo démonstration réalisée en local :