Booster la valeur des Open Data
Les Open Data
Les Open Data à l'état sauvage sont des bêtes assez égoïstes, dans le sens où elles envisagent rarement les applications qui vont en être faites et qu'il est fréquent de pester parce qu'il manque telle ou telle donnée qui rendrait l'exploitation tellement plus facile.
C'est normal !! Impossible de tout prévoir. Il est néanmoins pas interdit de réfléchir aux usages les plus évidents et de doper le jeu de données pour une plus grande polyvalence et simplicité d'usage.
On enrichit bien l'uranium, pourquoi pas les open data ?
Boost de niveau 1: Ajouter une colonne que l'on trouve ailleurs
Prenons par exemple les accidents de la route en Haute-Garonne en 2018:
Ville | INSEE | nb accidents |
---|---|---|
Toulouse | 31 555 | 461 |
Colomiers | 31 149 | 46 |
Saint-Gaudens | 31 483 | 25 |
Blagnac | 31 069 | 24 |
Tournefeuille | 31 557 | 21 |
Muret | 31 395 | 14 |
Auterive | 32 019 | 14 |
Portet-sur-Garonne | 31 433 | 10 |
Balma | 31 044 | 10 |
Sans surprise, l'agglomération Toulousaine est le siège du plus grand nombre d'accidents de la route dans le département. Mais il conviendrait de ramener les chiffres au trafic, au nombre d'usagers ou à défaut d'habitants pour espérer établir une comparaison légitime. On se dit que se serait bien pratique d'avoir une colonne supplémentaire qui renseignerait la population de la commune à la date de l'événement. Non ?
Bien sûr cette colonne sera redondante (dupliquée à l'identique à chaque accident localisé à Toulouse), et va créer un très léger accroissement de taille du fichier (quasi annulé par les différentes compressions des dispositifs de stockage). Le data scientist professionnel va hausser les épaules: il suffit de faire la jointure sur le code INSEE avec le jeu de données des populations.
Mais les utilisateurs normaux gagnent en confort et en simplicité à chaque réutilisation de trouver la grandeur permettant de normaliser.
Le code INSEE
Ce code est l'identifiant fiable d'une commune en France. Un même code postal peut regrouper plusieurs communes et les grandes villes ont plusieurs codes postaux. Le nom de commune est parfois soumis à de multiples variantes orthographiques... Un exemple: Saint Maur des fossés, Saint-Maur-des-fossés, St Maur des fossés, Saint Maur des Fosses dans le Val de Marne. Oups, pardon Val-de-Marne.
Tous ceux qui se sont frottés à des open data nationales vous le dirons y compris en provenance d'organismes réputés, la variabilité des orthographes des noms de communes est très importante. Les codes postaux ne sont pas fiables et même si le nom de commune est stable à l'intérieur d'un même jeu de données, il n'est pas raisonnable de supposer qu'elle soit orthographiée de manière identique dans un autre jeu de données.
Le code INSEE est le seul moyen de faire un travail sérieux.
Boost de niveau 2: calculer une nouvelle colonne
Supposons les accidents ne soient repérés que par les coordonnées GPS (ce qui est le cas de nombre d'entre eux pour lesquels la commune est inconnue ou incertaine: les routes sont parfois la frontière entre communes).
Nous n'avons plus que des points GPS. Il est devenu impossible d'aggréger les totaux pour chaque commune. Dommage ! Mais il est possible de placer les poins sur un fond de carte.
Voici par exemple les accidents de la route en 2018 de la Haute-Garonne tels qu'ils apparaissent dans l'outil Open Data Soft
Tout comme l'enrichissement de l'uranium nécessite de l'énergie et des procédés adéquats: mécanique, thermique, ... L'enrichissement des open data en capacités nouvelles réclame un effort qui ici consiste à déterminer pour un ensemble de points, à quel polygone (contours des communes) ils appartiennent.
C'est ce qu'on appelle la géolocalisation: on veut ajouter au jeu de données le code INSEE déduit de la position GPS. Il existe des applications qui savent faire ce traitement, et des services web qui les réalisent pour 50 points max. Des algorithmes autonomes existent aussi.
Voici un exemple de classeur Observablehq qui explique un algorithme rapide pour déterminer à quel polygone de commune appartiennent une liste de coordonnées GPS.
Rapide comme 150k points en moins d'une seconde.
Un nombre de points égal au curseur sont tirés au sort et l'algorithme détermine les polygones/communes qui les englobent. Le nom de la commune apparait en différé pour prouver qu'elle a bien été identifié. Pour plus de détails et découvrir comment ça marche: https://observablehq.com/@alainro/gps-to-city-in-france
Tous les jeux de données constitués de localisation GPS:
- événements culturels,
- commerces,
- campings,
- lieux touristiques,
- hébergements,
- ...
Peuvent être facilement enrichis du code INSEE de la commune. (Qui à son tour peut être exploité pour ajouter de nouveaux attributs: (boost de niveau 1).
Chaque jeu de données est rendu là encore plus riche et polyvalent.
Boost de niveau 3: calculer un nouveau jeu de données
Via Garona est un chemin de randonnée pédestre, long de 170 km, qui relie les sites de Saint-Jacques-de-Compostelle entre Toulouse (Basilique Saint-Sernin) et Saint-Bertrand-de-Comminges (Cathédrale Sainte-Marie). Le tracé est téléchargeable ici sur le site de la Haute-Garonne.
Elle traverse 41 communes, toutes situées sur le département de la Haute-Garonne, dont Toulouse, Muret, Noé, Rieux-Volvestre, Martres-Tolosane, Saint-Martory, Saint-Gaudens et Saint-Bertrand-de-Comminges.
Fort bien, et si on voulait savoir quelles communes sont limitrophes de ce parcours à moins de 2 kilomètres ? ou 3 ou 10 ? Par exemple pour y réserver un couchage, trouver une épicerie ou une pharmacie.
Au lieu de simplement ajouter une colonne à un jeu existant, on peut créer un nouveau jeu qui rassemble les communes à moins d'une certaine distance du parcours. L'algorithme n'a pas besoin d'être très subtil. Partant des 41 communes traversées (déterminées par le calcul précédent), il explore les communes limitrophes au rang 2, 3 ou plus et calcule la distance au chemin comme le minimum à vol d'oiseau des distances pourtour/chemin. NB: S'il est nécessaire de faire 5 kilomètres pour franchir un pont qui traverse la Garonne, l'algorithme en est évidemment ignorant.
Voici une illustration de cette capacité de calcul à la volée des 69 communes à moins d'un kilomètre qui mériteraient d'être aussi citées comme parties prenantes de Via Garonna.
La flèche qui descend permet de télécharger au format csv la table affichée à l'écran
On vient de créer un nouveau jeu de données qui donne accès à une information qui n'existait pas précédemment: précieuse pour les randonneurs ou les offices de tourisme des communes concernées.
Un peu comme si on avait distillé les données existantes pour en augmenter le niveau d'intérêt et leur spectre d'usage.
Une fois la brèche ouverte il est possible de s'y engouffrer pour généraliser et créer à partir des données disponibles de nouvelles connaissances facilement exploitables. Les communes à moins d'une certaine distance:
- d'un cours d'eau (un chemin),
- d'une forêt (un contour),
- d'un festival (un point),
- d'un parc régional (un contour),
- d'un lycée (des points),
- d'un bureau de poste (des points),
- ...
A retenir de ce texte: Il est tout à fait possible d'enrichir des données existantes à périmètre constant grâce à des calculs adéquats.