Géocoder un fichier d'adresses, c'est faire entrer un tableau d'adresses écrites et faire sortir une position pour chaque ligne. La partie facile prend dix minutes avec un outil gratuit. La partie qui compte, c'est le quart de lignes qui ne se place pas, ou pire, qui se place au centre de la commune avec l'air d'être au bon endroit. Cet article donne les trois façons de faire, honnêtement classées par cas, et la méthode pour ce quart-là.

Il s'adresse à celui qui a le fichier et pas de développeur sous la main : un responsable de réseau, un chargé d'études. Celui qui fera le travail pour lui trouvera son chemin au milieu, avec le script et l'API.

Le fichier, tel qu'il arrive

Un export de 400 sites depuis l'ERP ou le CRM. Les adresses ont été saisies à la main pendant dix ans, par des gens différents, pour des usages différents. On y lit « Centre commercial, route de Sète », un code postal d'arrondissement qui ne correspond pas à la rue, une commune qui a fusionné en 2017 et qu'on désigne encore par son ancien nom, un « ZI nord » sans numéro ni voie.

Posé sur une carte, le résultat a deux défauts, et le second est le plus grave. Des sites manquent : on les voit, on les cherche. Et des sites sont posés au centre du bourg, parce que l'outil n'a reconnu que la commune et a mis le point là. Ceux-là ont l'air placés. Personne ne les cherche.

Ce que ça coûte dépend de ce qu'on fait du fichier ensuite. Une zone de chalandise calculée depuis un point faux donne une population fausse, une concurrence fausse, et un avis faux. Un store locator qui envoie le client à trois kilomètres du magasin. Un calcul de tournée qui part du mauvais côté de la ville. Une zone fausse commence par une adresse fausse, et c'est le fichier qui décide.

Géocoder une adresse, en une phrase

Géocoder une adresse, c'est transformer une adresse écrite en coordonnées géographiques en la rapprochant d'un référentiel d'adresses connues. En France, ce référentiel est la Base Adresse Nationale, la BAN, tenue par l'IGN : 26 millions d'adresses avec leur position, alimentées par les communes. Tout géocodage sérieux d'adresses françaises s'y rapporte, le nôtre compris.

Trois niveaux de précision

Le rapprochement s'arrête à l'un de trois niveaux, et c'est ce niveau qu'il faut lire, bien plus que le score.

  1. À l'adresse. Le numéro a été trouvé dans la voie. La position est celle du bâtiment, de son entrée ou de sa parcelle. C'est le seul niveau qui place vraiment.
  2. À la voie. La rue est reconnue, pas le numéro. La position est un point de la rue, qui peut être à 500 mètres du bon numéro sur une longue avenue.
  3. À la commune. Seule la ville est reconnue. La position est le centre de la commune.

Le piège du repli sur la commune

Un site placé au centre de sa commune n'est pas géocodé. Il est perdu avec élégance. Beaucoup d'outils font ce repli par défaut, parce qu'un point sur la carte a l'air d'un résultat et qu'une case vide a l'air d'un échec. C'est l'inverse qui est vrai : la case vide dit la vérité, le point au centre du bourg ment.

Le géocodage des sites de Mes lieux, l'espace client de TrustyData, ne fait jamais ce repli. Une adresse qui ne se résout pas laisse le site sans position, visible comme tel dans la liste et sur la carte, plutôt que posé au mauvais endroit. Une panne passagère du référentiel ne le fait pas non plus passer en échec : il reste en attente et sera réessayé. Seule une adresse réellement introuvable donne un échec.

Trois façons de géocoder un fichier

L'outil CSV de la BAN, pour une fois

L'outil de géocodage CSV de adresse.data.gouv.fr est gratuit et public. Il prend un fichier CSV encodé en UTF-8, de moins de 50 Mo ou 200 000 lignes, et rend pour chaque ligne une latitude, une longitude et un score. Pas de compte, pas de clé.

C'est la bonne réponse quand on a besoin des coordonnées une fois : une étude ponctuelle, un fichier qu'on ne reverra pas. Ce qu'il ne fait pas : il ne rend pas de verdict, c'est à vous de choisir le seuil de score au-dessous duquel vous ne faites pas confiance au résultat ; il ne garde rien, le fichier suivant repart de zéro ; et il n'offre aucun geste pour les lignes qui ne se placent pas, elles sortent du fichier comme elles y sont entrées. Notre service ne fait pas « mieux que la BAN », c'est la même base. Il fait autre chose avec.

Un script sur une API, pour le refaire chaque semaine

Quand le fichier revient toutes les semaines ou que le géocodage s'insère dans une chaîne de traitement, on écrit un script qui appelle une API, une adresse par requête. Sur TrustyData, c'est POST /address/verify : il prend l'adresse écrite librement et rend la meilleure correspondance dans la BAN avec trois choses que l'outil CSV ne donne pas.

  • Un verdict, pas seulement un score : match_exact au-dessus de 0,90, match_probable entre 0,75 et 0,90, aucun_match au-dessous. Le seuil est déjà choisi et documenté, votre script n'a qu'à le lire.
  • L'adresse déjà découpée en lignes postales : la voie avec son numéro, le complément, le code postal avec la commune. Vous la réécrivez telle quelle dans votre système, sans recomposer.
  • La position en WGS84 et en Lambert 93, à partir du plan Starter, et le code IRIS à partir de Growth si vous en avez besoin ensuite.
import requests

reponse = requests.post(
    "https://api.trustydata.app/services/v1/address/verify",
    headers={"Authorization": "Bearer VOTRE_CLE"},
    json={"q": "8 boulevard du Port, Amiens"},
)
meilleure = reponse.json()["matches"][0]
print(meilleure["verdict"], meilleure["ligne_voie"], meilleure["ligne_commune"])
# match_exact 8 Boulevard du Port 80000 Amiens

La boucle sur le fichier, la reprise sur erreur et l'écriture du résultat sont dans l'article Nettoyer un fichier d'adresses en Python. Pour comparer cette API à l'API Adresse gratuite, l'article API Adresse (BAN) : limites et alternative le fait point par point.

L'import de Mes lieux, pour des points de vente à garder à jour

Quand les adresses sont vos points de vente, le fichier n'est pas une chose à géocoder une fois. C'est un référentiel à tenir. L'import de fichier de Mes lieux prend un CSV ou un classeur Excel .xlsx de 20 Mo au plus et crée les sites en cinq étapes : le fichier, la correspondance des colonnes, les valeurs par défaut communes à tous les sites, la vérification ligne à ligne, l'import. Le géocodage se fait ensuite, en tâche de fond, et les sites apparaissent sur la carte au fur et à mesure.

Le lendemain, deux gestes isolent ce qui reste. Le filtre Géocodage → Échec liste les adresses que la BAN n'a pas reconnues. La puce « N sans position » de la ligne de compte, ou la case « Sans position seulement », rassemble les sites en attente et en échec, c'est-à-dire tout ce que la carte ne peut pas montrer. Pour chaque site, vous corrigez l'adresse, vous déplacez le marqueur sur la carte à l'endroit exact, ou vous saisissez des coordonnées que vous avez déjà. Un site peut aussi entrer dans le fichier avec sa latitude et sa longitude : il est alors en statut « Position fournie » et le géocodage ne le touche pas.

Le détail des cinq étapes et des filtres est dans le guide de l'import de Mes lieux. La capacité est incluse dans le plan : 200 sites en Starter, 2 000 en Growth, 10 000 en Business, et l'import compte une unité de quota par tranche de 1 000 sites.

Les trois, côte à côte

Outil CSV de la BAN Script sur l'API Import de Mes lieux
Coût Gratuit Une unité par adresse, à partir de Starter pour la position Une unité par tranche de 1 000 sites, capacité incluse dans le plan
Ce qui sort par ligne Position et score Verdict, lignes postales, position Site géocodé, en échec ou sans position, sur la carte
Les lignes qui échouent Sortent telles quelles Verdict aucun_match, à traiter dans votre code Filtre Échec, correction au marqueur ou coordonnées saisies
Dans le temps Rien n'est gardé Ce que votre script garde Nouveaux sites géocodés au fil de l'eau, synchronisation
Qui le fait N'importe qui, une fois Un développeur Le responsable du réseau, sans code

Lire le résultat, ligne par ligne

Quel que soit le chemin, chaque ligne finit dans l'une de trois issues, et chacune appelle un geste précis.

Issue Ce que ça veut dire Le geste
Placée à l'adresse Le numéro est trouvé dans la voie, match_exact Rien. Au plus, remplacer l'adresse saisie par la version rendue.
Placée à la voie, ou ambiguë La rue est reconnue, le numéro ne l'est pas, ou deux candidats se valent, match_probable Vérifier le numéro et le code postal à la source. Le code postal d'arrondissement faux est le cas le plus fréquent.
Introuvable Rien d'assez proche, aucun_match, ou site sans position Corriger l'adresse dans le système d'origine. Si vous avez les coordonnées, le livreur les a souvent, les donner directement.

Dans les deux derniers cas, corriger à la source vaut toujours mieux que corriger dans l'outil. Une adresse réparée dans l'outil de géocodage est réparée une fois. La prochaine extraction de l'ERP ressort la même faute, et vous la réparez une deuxième fois. Le fichier propre est celui du système d'origine.

Un conseil sur l'ordre : traitez d'abord les lignes placées à la voie. Elles ont l'air justes, elles sont sur la carte, et ce sont elles qui faussent une zone de chalandise ou un calcul de proximité sans que personne ne s'en aperçoive. Les introuvables, elles, se signalent toutes seules.

Garder le fichier propre

Un référentiel de sites bouge : des ouvertures, des fermetures, des déménagements. Dans Mes lieux, un site ajouté est géocodé au fil de l'eau, sans relancer le fichier. La synchronisation avec votre export désactive les sites disparus sans jamais rien supprimer, et refuse si l'export est tronqué au point de supprimer plus de la moitié des sites actifs. Une position que vous avez fournie n'est jamais écrasée par un géocodage.

Ce que ça ne fait pas

Pas d'adresses hors de France : la Base Adresse Nationale est française, et le géocodage s'arrête à la frontière. Pas de traitement de fichier par l'API : elle traite une adresse par requête, et l'import de fichier est une fonction de l'espace client, pas de l'API. Pas de certificat de distribution postale : on place une adresse sur la carte, on ne garantit pas qu'un courrier y arrive.

Essayer sur une adresse

La démo de vérification d'adresse fait sur une seule adresse ce que cet article décrit sur un fichier : vous tapez une adresse telle qu'elle est écrite dans votre export, elle rend le verdict, le score, l'adresse en lignes postales et sa position.

Vérifier une adresse dans la démo, sans compte.

Pour aller plus loin : la page Géocodage France décrit le service et ses plans, et l'article Store locator sans Google Maps montre ce qu'un fichier propre permet ensuite : vos points de vente sur votre site, à jour depuis le référentiel.