Géocodage de Points d’Intérêt…

Géocodage: de quoi s’agit-il ?

D’après wikipédia…

Le géocodage consiste à affecter des coordonnées géographiques (longitude/latitude) à une adresse postale. Ce procédé conduit à la mise en place de traitement automatisés de manière ponctuelle ou sur des fichiers d’adresses (individus, entreprises, points d’intérêt, etc.). Les coordonnées géographiques permettent de situer chaque adresse sur une carte numérique via un Système d’Informations Géographiques (SIG). Le géocodage est une des techniques de géolocalisation ou de géoréferencement.

On parle bien d’une adresse postale comme élément de départ, le problème c’est que dans la vie courante, nous utilisons aussi beaucoup d’autres façons pour indiquer un lieu et tous les lieux n’ont pas forcément une adresse postale.

Connaissez-vous l’adresse postale de Notre-Dame de Paris, de la Tour Eiffel ou du Mont-Blanc ? Pourtant, ces simples noms sont relativement explicites et finalement bien plus souvent utilisés au quotidien que l’adresse postale les concernant (quand elle existe !).

Les bases d’adresses comme la Base Adresse Nationale ne contiennent que des données permettant de faire la correspondance entre adresse postale et position géographique. Il faut donc compléter ces données par des informations sur des points d’intérêt (ou POI en anglais).

Ce type de recherche est aussi très utile lors du traitement des appels d’urgence par les services de secours… car on décrit le plus souvent l’endroit où l’on est par autre chose qu’une adresse.

Les Points d’Intérêt issus d’OpenStreetMap

OpenStreetMap est une source très riche en POI et on y retrouve bien sûr Notre-Dame, la Tour Eiffel ou le Mont-Blanc. Extraire ces données n’est pas complexe.

On peut ne conserver que les objets possédant un nom (tag “name” dans OpenStreetMap). Les contributeurs OpenStreetMap ont bien entendu renseigné les noms des points d’intérêts majeurs comme nos 3 exemples, mais beaucoup de points d’intérêts mineurs peuvent aussi être utiles lorsque l’on cherche un service à proximité tel qu’une boulangerie, ou station de taxi. Dans ces cas il n’y a pas toujours de nom ou bien il n’a pas été systématiquement renseigné dans les données OpenStreetMap.

Quelques scripts permettent de sélectionner dans les données OpenStreetMap les POI utiles, à indiquer un libellé par défaut si aucun nom n’a été renseigné et à mettre toute cela en forme.

Exemple avec un téléphérique: {“id”:”http://osm.org/way/23575314","type":"poi","poi":"cable_car","name":["Téléphérique de Bellevue”],”lat”:45.8831336,”lon”:6.7849478,”city”:”Les Houches”,”citycode”:”74143",”importance”:0.5}

Près de 2.4 millions de POI sont ainsi extraits des données OpenStreetMap sur la France.

Des Points d’Intérêt provenant de la base SIRENE

La base SIRENE est produite par l’INSEE et disponible en opendata depuis janvier 2017. C’est même une des 9 bases de référence faisant partie du Service Public de la Donnée.

Elle contient la description de plus de 11 millions d’établissements en France. Elle contient le nom de l’établissement (et éventuellement son enseigne commerciale), son adresse postale et bien d’autres renseignements.

C’est un bon complément aux données OpenStreetMap, mais il faut n’en sélectionner qu’une partie car elle contient aussi des entreprises individuelles ou n’ayant pas d’activité liée à un lieu bien précis.

Il faut aussi faire un géocodage classique de cette base pour avoir une position géographique partant de l’adresse postale. 
Comme j’effectue un tel géocodage chaque début de mois sur le stock mensuel de la base SIRENE à l’aide de la BAN (elle aussi faisant partie du Service Public de la Donnée) mais aussi de BANO (produite par OpenStreetMap France), il suffit donc uniquement de sélectionner ce qui nous intéresse.

Sur l’Île de France, c’est ainsi plus de 840.000 POI qui sont extraits de SIRENE et mis en forme pour le moteur de géocodage…

Le moteur de géocodage

Une fois que les données sont préparées, il faut un outil pour rechercher à l’intérieur les POI. Vu nos données, il nous faut un moteur de géocodage qui ne soit pas trop dépendant à la structure habituelle des adresses postales et plus orienté recherche plein texte.

addok : géocodeur d’Etalab

Cela tombe bien car c’est exactement le mode de fonctionnement de addok, le moteur de géocodage développé par Etalab pour l’API de géocodage du site adresse.data.gouv.fr qui a une approche plein texte peu dépendante de la structure des adresses.

Les scripts ci-dessus préparent nos données de POI au format json attendu par addok pour permettre ensuite à celui-ci de les indexer.

Une fois les données chargées et indexées, addok permet:

  • la recherche d’un POI à partir de son nom
  • l’autocomplétion lors des recherches (proposer des résultats en cours de saisie)
  • faire des recherches avec préférence géographique (utile lors d’un usage sur mobile pour une recherche de proximité)
  • limiter les recherches par des filtres (un sur le type de POI et l’autre sur le code INSEE de la commune où il se situe)

POC de POI ?

Le résultat de ce test est visible sur http://poi.addok.xyz (oui, l’interface graphique est ultra minimaliste) avec les POI OpenStreetMap sur la France entière et ceux de SIRENE uniquement sur la région Île de France.

Les libellés en MAJUSCULE proviennent généralement de la base SIRENE, ceux en minuscule proviennent d’OpenStreetMap.

Il y a bien entendu des ajustements à faire pour prioriser les POI car un même terme peut être utilisé de très nombreuses fois. Par exemple “Tour Eiffel” retourne en premier l’embarquement pour les bateaux mouche, plutôt que la tour elle même qui arrive en seconde place (voir exemple ci-dessous).

L’API de géocodage est ouverte pour test, exemple:

http://poi.addok.xyz/search?q=tour%20eiffel

A suivre…

Show your support

Clapping shows how much you appreciated Christian Quest’s story.