Challenge Open Data

Objectif


L'objectif de ce projet est de représenter de façon originale un ensemble de données. Nous avons choisi de représenter les principales zones cultivées et les concentrations en pesticides relevées dans les eaux souterraines en France métropolitaine.
Pour cela, nous avons représenté une carte de France divisée en départements, sur laquelle nous avons représenté la proportion de chaque département qui est cultivée, ainsi que les différents points de relevé des eaux souterraines.
Afin de déterminer s'il existe ou non une corrélation entre ces deux informations, nous avons également construit un graphique représentant, pour chaque département, la concentration moyenne en pesticides relevée dans les stations par rapport à la proportion de surface utilisée pour les cultures.

Données utilisées


Nous avons utilisé les jeux de données suivants :

  • Pesticides dans les eaux souterraines
    Nous avons téléchargé deux fichiers de ce site :
    • Caractéristiques des stations de mesure
    • Moyenne des concentrations totales en pesticides quantifiées - 2012
  • Registre Parcellaire Graphique 2012
    Des registres parcellaires graphiques plus récents sont également disponibles, mais nous avons choisi celui de l'année 2012 afin de conserver une cohérence avec les relevés de pesticides. En effet, la version la plus récente de ce document date de 2012.

Traitement des données


Concentration en pesticides dans les eaux souterraines

Les deux fichiers utilisés sont peu volumineux (moins de 2 Mo au total), nous avons donc choisi de les télécharger pour effectuer le traitement. Pour cela, nous avons créé un script python qui traite les deux fichiers CSV afin d'en créer un troisième, qui sera ensuite utilisé dans l'application.
Les deux fichiers présentent des erreurs : pour certaines lignes, les données peuvent être décalées de une à deux colonnes. Avant tout, il est donc nécessaire de vérifier chaque ligne lue et, si besoin, de repositionner les données.
Ensuite, il faut sélectionner et sauvegarder les données utiles de chaque fichier.

  • Pour les stations, on conserve le code, les coordonnées X et Y, le numéro INSEE de la commune et le numéro du département.
  • Pour les relevés, on conserve le numéro de la station et la concentration moyenne en pesticides.
À l'aide du code des stations, on peut alors identifier les stations pour lesquelles les relevés sont disponibles et regrouper les données qui les concernent dans un fichier CSV.
Cependant, les coordonnées des stations doivent d'abord être modifiées. En effet, le code javascript utilisé ensuite demande les coordonnées GPS des stations (latitude et longitude), mais le jeu de données ne fournit que les coordonnées de Lambert 93. Il faut donc appliquer une transformation sur les valeurs X et Y pour terminer le traitement.
Une fois le fichier CSV généré, nous le convertissons en une variable JavaScript afin que sa lecture soit possible depuis un maximum de navigateurs différents. Google Chrome, par exemple, ne permet pas de lire un fichier CSV local, contrairement à Firefox.

Registre parcellaire graphique

Le registre parcellaire graphique est publié sur data.gouv.fr chaque année depuis 2012. Il recense toutes les parcelles agricoles françaises avec en particulier le type de culture qui y est pratiqué. Les données sont entrées par les exploitants eux-mêmes, qui sont tenus chaque année de déclarer l’ensemble de leurs parcelles aux autorités. Ces données sont hébergées par l'entreprise française Opendatasoft qui les rend accessibles via une API. Les données renseignées pour chaque parcelle sont :

  • un géopoint positionné au centre de la parcelle
  • une liste de points (latitude et longitude) qui forment le polygone représentant les contours de la parcelle
  • un identifiant (appelé numéro d'îlot)
  • un code culture indiquant à quelle groupe de culture est destinée la parcelle
Nous avons choisi d’éditer une carte de France métropolitaine montrant pour chaque groupe de culture le pourcentage de surface cultivée dans chaque département. Nous nous sommes limités à 8 groupes de culture à l’origine de la majorité des utilisations de pesticides sur le territoire. En utilisant l’API nous avons pu extraire pour chaque groupe de culture 10 000 parcelles aléatoirement réparties parmis l’ensemble des parcelles de ce groupe. Nous leur avons appliqué le traitement suivant :
  • À partir de l’ensemble des points formant les contours de la parcelle nous avons déterminé la surface de cette parcelle. L’algorithme utilisé découpe le polygone en triangles et fait la somme des aires de ces triangles.
  • Le code INSEE du département est inscrit dans l’identifiant de la parcelle, il est simplement extrait en vérifiant qu’il s’agit bien d’un département de France métropolitaine
La surface de chaque groupe de culture par département est ainsi déterminée. Avec la surface du département il est possible d’obtenir un pourcentage de la surface du département dédiée à cette culture. Un objet Javascript est généré, à chaque département correspond un tableau de 8 valeurs contenant les pourcentages de surface des 8 groupes de cultures.

Visualisation des données


Représentation cartographique

Cette représentation est basée sur une carte de France divisée en départments. Elle est surtout informative, et permet de localiser géographiquement les informations. On récupère le fichier geojson au lien suivant : departements.geojson
Chaque département y est représenté avec une couleur verte plus ou moins marquée. Plus le vert est foncé, plus le pourcentage de surface du département destiné à la culture est grand.
Les stations de mesure des eaux souterraines sont représentées par des cercles violets. La taille du cercle indique la concentration en pesticides. Plus le rayon du cercle est grand, plus la concentration moyenne en pesticides relevée est importante.
Des fonctionnalités de zoom et de déplacement à l'aide de la souris permettent de connaître avec précision des localisations des stations de mesure.

Représentation graphique

Cette représentation ne permet pas de localiser les données sur le territoire français, mais permet cependant d'établir clairement l'existence ou non d'une corrélation entre l'agriculture et la présence de pesticides dans les eaux souterraines.
Pour chaque département, le graphique représente le pourcentage de surface agricole en abscisse et la concentration moyenne en pesticides en ordonnée. S'il existe une corrélation entre ces deux éléments, les points doivent former une courbe significative.

Interactions

Choix du type de culture

Il est possible de choisir le type de culture à analyser à l'aide d'une liste déroulante. Lorsque l'utilisateur choisit un type de culture, la carte et le graphique sont actualisés avec les données surfaciques correspondantes.

Affichage d'informations supplémentaires

Lorsque l'on déplace la souris sur un point du graphique ou un département, une fenêtre additionnelle apparaît pour préciser les informations.

Liaison carte/graphique

En cliquant sur un département, il est possible de distinguer le point correspondant dans le graphique, qui s'affiche en rouge. De la même façon, cliquer sur un point met en évidence le département correspondant sur la carte.

Outils utilisés


  • La récupération des données du registre parcellaire graphique via l'API se fait par un requête http GET. Les paramètres de cette requête permettent de trier les parcelles par groupe de culture. Pour éviter un temps de chargement trop important, on se limite à l'extraction de 10 000 parcelles par groupe de culture, ces parcelles sont aléatoirement choisies parmis l'ensemble.
  • Nous avons utilisé D3.js car c'est un outil qui permet de faciliment dessiner des figures sur un fichier html. Notamment, D3 parse et dessine automatiquement les fichiers geojson qui sont utilisés pour représenter des cartes. Il représente aussi un bon moyen de dessiner des graphiques et de placer des éléments dynamiquement.
  • Nous avons quand même utilisé AngularJS pour structurer le projet d'une façon organisée et profiter du data-binding.
  • Pour faciliter l'implémentation de l'interface, nous nous sommes servis de la bibliotèque bootstrap, profitant de ses classes css.

Architecture du projet


L'application est entièrement contenue dans le répertoire /app du projet. Celui-ci contient les fichiers HTML (fichier principal et rapport), ainsi que les fichiers de données nécessaires. Le script python utilisé pour traiter les données relatives aux relevés des eaux souterraines est également stocké ici.
Ce dossier contient également un sous-répertoire js, dans lequel se trouvent les différents scripts JavaScript utilisés dans l'application :

  • mapService.js : il s'agit du script qui dessine la carte avec toutes les intéractions qui lui sont liées comme par exemple, la couleur des départements ou le placement des cercles.
  • graphicService.js : c'est le script qui dessine le graphique et tous les éléments associés.
  • json.js : il définit la variable pesticide qui contient le json avec les données relatives aux stations de détection des pesticides. En effet, on ne pouvait pas utiliser directement le fichier json car nous avions des problèmes d'accès dus aux "cross-origin requests" non permises par certains navigateurs.
  • dataVisualizationController.js : c'est le fichier qui rejoint tous les service et fait quelques initialisations de valeurs.
  • harvestDataServices.js : service chargé de disponibiliser les données sur les cultures pour le reste de l'application.

Limites du projet


Certains éléments de la visualisation ne sont pas satisfaisants et doivent être mentionnés :

  • Pour des raisons de temps de chargement nous nous sommes limités au traitement de 10 000 parcelles pour chaque groupe de culture. Ceci ne constitue qu’un échantillon de l’ensemble des parcelles du territoire (il y en a par exemple 820 000 pour le blé tendre ou 67 000 pour les légumes et fleurs). Ainsi le pourcentage indiqué ne doit pas être pris comme un chiffre fiable. Son seul intérêt est de pouvoir comparer les départements entre eux.