OpenStreetMap : Utiliser des données ouvertes et garantir des données de "haute qualité" ?
Explorons l'utilisation d'OpenStreetMap : l'extraction de données géospatiales et la mise en œuvre d'une approche visant à améliorer la qualité globale des données.
Les principales étapes de l'extraction des données : la sélection de la zone d'intérêt, la collecte, le nettoyage et la préparation.
Introduction d'OpenStreetMap
Des données sont générées partout et tout le temps, chaque fois que vous achetez votre dîner, que vous réservez un billet de train ou que vous visitez un site web. La plupart du temps, ces données sont détenues par des entreprises ou des institutions qui ne les partagent pas. Les données sont dites ouvertes lorsque ces acteurs décident de les mettre à la disposition du public et de les réutiliser sans restrictions légales ou commerciales. Les données ouvertes sont souvent partagées par des institutions gouvernementales plutôt que par des entreprises. Elles estiment que les données mises à disposition contribueront à la création de valeur et au PIB. Grâce à ces données ouvertes, les entreprises créeront plus de produits et de services, plus rapidement qu'auparavant, tout en réduisant les coûts. Elles stimuleront alors indirectement l'activité commerciale, créeront de nouveaux emplois et augmenteront le PIB. Les données ouvertes contribueront également à améliorer la prise de décision, qu'il s'agisse d'institutions ou d'entreprises.
La taille du marché des données ouvertes est en constante augmentation. Les principaux domaines pour lesquels des données ouvertes sont publiées sont la géographie et la météorologie, l'économie et les affaires, le trafic/les transports ou les informations sociales.
Voici quelques chiffres clés qui soulignent l'importance des données ouvertes :
- La France compte plus de 350 000 ensembles de données ouvertes, les États-Unis (selon data.gov) plus de 250 000.
- Économies estimées à 1,7 milliard d'euros pour les administrations publiques de l'UE.
- Réduction de la corruption de 10 %.
(Pour mieux comprendre l'impact de l'utilisation des données ouvertes, vous pouvez consulter le site Open Data Impact).
Présentation d'OpenStreetMap
Présentation du projet
OpenStreetMap (OSM) est une plateforme collaborative de cartographie en ligne qui est devenue une ressource incontournable pour les développeurs et les entreprises du monde entier, comme Amazon ou Uber. Lancé en 2004, OSM est une alternative gratuite et open-source aux services de cartographie propriétaires tels que Google Maps ou Bing Maps. Avec plus de 9 milliards d'éléments, dont des routes, des bâtiments et des points d'intérêt, il s'agit d'un référentiel massif d'informations géographiques qui ne cesse de s'enrichir. En fait, en 2021, OSM contiendra plus de 95 millions de kilomètres de routes cartographiées, ce qui en fait le plus grand projet de cartographie open-source au monde. Pour mettre les choses en perspective, cela représente une longueur de route suffisante pour faire le tour de la Terre plus de 2 300 fois ! OSM fonctionne de la même manière que Wikipédia, avec une communauté mondiale de bénévoles mais aussi des entreprises privées qui ajoutent et modifient des informations sur la plateforme en temps réel.
API sur le passage supérieur
Overpass API conserve une copie de la base de données OSM principale et la met à disposition pour des recherches sur le Web. Elle met fréquemment à jour les données en observant les changements qui se produisent dans la base de données OpenStreetMap. Le code de l'API Overpass est ouvert. Par conséquent, n'importe qui peut détenir une version en lecture seule, consultable et mise à jour de la base de données OpenStreetMap, s'il dispose d'un matériel suffisant.
Nous n'entrerons pas dans les détails du modèle de données d'OpenStreetMap. Vous pouvez vous référer à la documentation pour cela. Nous fournissons une description simple des principaux concepts d'OpenStreetMap : balises, objets (nœud, chemin, relation) et zones.
- Les balises sont constituées de paires clé/valeur et représentent les données sémantiques d'OpenStreetMap, par exemple nom : "Gare de Lyon", chemin de fer : "station". Elles peuvent être classifiantes (valeurs restreintes, par exemple la clé chemin de fer ne peut prendre que des valeurs spécifiques) ou descriptives (clé fixe, valeurs quelconques, par exemple le nom). Un objet OpenStreetMap ne peut pas avoir deux clés identiques.
- Un nœud se compose d'un identifiant, de coordonnées et de balises. C'est le seul objet OSM qui possède des coordonnées.
- Un chemin se compose d'un identifiant, d'une séquence de nœuds et de balises. La séquence de nœuds crée la géométrie (en reliant les nœuds). Les voies peuvent être connectées si elles partagent un nœud commun. Le même nœud peut apparaître plusieurs fois dans la séquence. Les relations sont plus complexes que les nœuds et les voies. Elles ont été créées pour représenter les restrictions de virage, les frontières, etc. Elles sont moins pertinentes pour notre étude.
- Les zones ne sont pas des objets OSM mais peuvent être extraites des voies et des relations étroites.
L'API Overpass fournit un langage de recherche (OverpassQL) pour interroger les objets OSM. Il fonctionne comme n'importe quelle autre API. Pour obtenir des données OSM, vous devez envoyer une requête http avec une demande suivant le langage OverpassQL. Pour plus de détails sur ce langage, veuillez vous référer à la documentation de l'API Overpass. Le langage peut être un peu déroutant, même si vous êtes habitué aux langages de requête traditionnels. Cependant, le site web Overpass turbo permet de tester les requêtes Overpass API et de voir les résultats sur une carte interactive. Nous vous recommandons vivement de tester vos requêtes sur une petite zone géographique à l'aide d'Overpass turbo avant de les exécuter à grande échelle à partir de vos scripts.
Construire et enrichir les données cartographiques des restaurants à l'aide d'OSM
Description du cas d'utilisation
Pour illustrer notre étude, nous construisons une base de données cartographique des restaurants d'Ile-de-France (région française à laquelle appartient Paris). Vous pouvez essayer de récupérer les sites web de réservation ou d'évaluation les plus populaires. Cependant, l'utilisation d'OpenStreetMap est beaucoup plus simple si vous voulez éviter un travail pénible de "web scraping".
Les données relatives aux restaurants changent fréquemment. Nous espérons également que le rafraîchissement périodique de la base de données OpenStreetMap inclura les restaurants nouvellement ouverts, les restaurants récemment fermés, etc.
Collecte de données
Nous nous appuierons sur le système des balises (voir ci-dessus pour plus d'informations) pour effectuer l'extraction des données. Pour déterminer les balises utilisées, des sites web comme TagInfo rassemblent des données complètes sur les balises et présentent des statistiques pertinentes pour identifier les balises les plus utilisées. Par exemple, nous pouvons voir que les restaurants sont étiquetés à l'aide de l'information : "amenity=restaurant"
En utilisant Overpass et les informations précédentes, nous obtenons la requête suivante pour collecter tous les restaurants en Ile-de-France :
Dans la sortie GeoJson, chaque élément (nœud, chemin et relation) est représenté par le format suivant :

Amélioration de la qualité des données

Raw data quality assessment
Comprendre quelque 450 caractéristiques peut s'avérer pénible. La plupart d'entre elles ne représentent que 10 à 100 restaurants. Pour mieux comprendre les caractéristiques et éviter de les lire toutes, nous mettons en œuvre des méthodes de regroupement appliquées aux étiquettes des caractéristiques.
Nous procédons en plusieurs étapes :
- Calculer l'intégration des étiquettes des caractéristiques à l'aide des modèles NLP les plus courants (transformateurs).
- Calcul d'une matrice de distance (similarité cosinus par paire entre les enregistrements des caractéristiques).
- Obtention de clusters à l'aide d'un clustering hiérarchique.
La qualité des regroupements a été évaluée à l'aide du score de silhouette et de la somme des erreurs quadratiques. Il existe probablement une meilleure méthode pour effectuer le regroupement. Cependant, notre objectif est d'avoir un aperçu des caractéristiques, et non d'obtenir une référence en matière de regroupement. Pour cela, le clustering hiérarchique nous a donné des résultats satisfaisants. Les résultats peuvent être visualisés ci-dessous.

Nettoyage des données : suppression des redondances
OpenStreetMap est un outil collaboratif. Nous nous demandons alors si plusieurs observations d'un même restaurant peuvent se trouver dans le jeu de données.
Dans notre cas, nous avons extrait les nœuds et les chemins de la base de données OpenStreetMap. Une voie définit souvent une polyligne ou un polygone, contenant ainsi une séquence de nœuds. Étant donné que certains nœuds sont inclus dans des voies et que nous voulons fusionner les nœuds et les voies dans la même structure, nous devons supprimer les éventuelles redondances. Nous ne pouvons pas considérer uniquement les nœuds ou les chemins, car les étiquettes de restaurant peuvent se trouver dans les deux éléments.
La solution que nous avons choisie est de supprimer les nœuds qui sont contenus dans les voies. Cela correspond à 12 735 nœuds (pour 1205 chemins). Après fusion des voies et des nœuds restants, nous avons 15 382 restaurants identifiés. Les sources officielles s'accordent à dire qu'il y a un peu plus de 18 000 restaurants en Ile-de-France. Ce chiffre inclut la restauration rapide, alors qu'OpenStreetMap les distingue. 15 382 n'est donc pas une mauvaise estimation du nombre de restaurants autour de Paris.
Augmentation des données : enrichissement des adresses
Le géocodage inversé est le processus de traduction des coordonnées géographiques en un format d'adresse lisible. Il peut s'agir d'un outil précieux pour enrichir les données d'adresses, en fournissant des informations supplémentaires telles que les codes postaux, les quartiers et les villes, ce qui peut améliorer la qualité de l'analyse et des modèles prédictifs.
Dans notre cas, nous utilisons l'API adresse de data.gouv.fr pour enrichir et nous collectons les informations d'adresse pour compléter les informations manquantes.
Résultats
Sur 15 382 restaurants, nous avons réussi à enrichir la plupart des adresses (voir les graphiques ci-dessous). Dans le cas où l'enrichissement a échoué, le problème provient du résultat vide de l'API Adresse. Après avoir examiné quelques exemples, nous avons constaté que les informations sur ces restaurants étaient très rares et que les adresses étaient soit indisponibles, soit inexactes. Heureusement, ces restaurants ne représentent que 0,5 % du nombre total de restaurants récupérés.

Conclusion
OpenStreetMap est un outil puissant, facile à utiliser et open source. Il ne nécessite pas beaucoup d'installations grâce à l'API Overpass et aux points de terminaison publics associés. Cet article vise à fournir une introduction pratique à OSM et à expliquer comment vous pouvez l'utiliser dans vos futurs projets.
En plus des informations ponctuelles, OSM offre une multitude de données géographiques détaillées telles que les itinéraires de transit, les bâtiments, les voies navigables, les parcs, les transports publics, etc. Ces données peuvent être utilisées pour une variété de cas d'utilisation tels que la planification urbaine, l'analyse de l'accessibilité et bien d'autres.
Chez Sia Partners, nous maîtrisons l'Open Data car nous pensons que votre entreprise peut en tirer une grande valeur ajoutée. Si vous souhaitez en savoir plus sur l'Open Data ou sur nos études, consultez notre article, "Open data in France, an opportunity for fine-scale prediction" et visitez le site web d'Heka pour plus de contenu.