AngoraTek EN
← Retour au blog
Overture Maps 9 min de lecture

Vous pouvez arrêter de louer votre géocodeur

Le géocodage est une location dont l'actif vient de passer en solde. La version 2026-09-23.1 d'Overture livre 474 000 000 d'entités d'adresse, 81 455 423 lieux et 4 688 229 découpages administratifs sous licences ouvertes. Tout ce qui vit de ces faits, les dispatchs de VTC, la confirmation des livraisons, les dépôts logistiques et la déduplication des CRM, continue de payer un fournisseur à l'appel pour des réponses de la même famille.

Notre position, formulée pour qu'un sceptique puisse viser : pour le géocodage au niveau des lieux et des divisions, construire sur les données Overture l'emporte déjà sur la location, et l'exception de rue dispose d'une parade documentée. Deux projets communautaires ont déjà livré des géocodeurs qui tournent sur ces données. Ce qu'un tarif à l'appel achète encore en 2026, ce sont une capacité maintenue et une file d'assurance, qui valent une année de migration, pas dix.

La réplique classique : les fournisseurs sélectionnent, rafraîchissent et garantissent leurs données, et une table gratuite ne fait rien de tout cela. D'accord, pour les numéros dans une rue. Pour la coordonnée d'un commerce, la limite d'une ville ou le polygone d'un quartier, la question est de savoir si des données libres répondent à l'appel, et la suite de ce billet examine où la réponse est oui.

Ce que le tarif à l'appel achète vraiment

VTC, livraison, logistique et dédoublonnage CRM finissent tous par le même geste : apparier une chaîne de caractères à un point sur Terre. Cet appariement est une arithmétique posée sur un tableau de faits. Quand un CRM demande si « 14 Rue des Lilas » et « 14 rue des LILAS » désignent le même client, le travail de fond est une consultation. Un géocodeur commercial vend cette consultation emballée avec la sélection, la fraîcheur, la capacité et un SLA, quatre services réels, et la facture ne les sépare jamais. Les faits sont désormais séparables, donc l'emballage mérite une seconde lecture.

Un de ces services est vraiment difficile à reproduire, les trois autres sont du travail. La sélection, c'est la couche éditoriale qui sait qu'une station-service a déménagé. La fraîcheur, c'est un fil direct sur l'évolution du monde. La capacité, en revanche, ce sont des machines, et un tableau que vous interrogez vous-même supprime la partie de la note qui payait pour avoir le privilège d'interroger celui d'un autre.

Ce billet ne soutient pas que chaque atelier doit lancer son propre géocodeur au prochain sprint. Il soutient que les faits ont cessé d'être la douve, et que le reste de la note mérite d'être re-calculé dans votre tête en conséquence.

Lieux et divisions : l'offre honnête de cette version

Overture publie ses données par thème, et deux d'entre eux portent déjà le poids d'un géocodeur. Sur la version 2026-09-23.1, le thème des lieux contient 81 455 423 enregistrements, chacun avec des noms sous plusieurs formes, des sites web, des téléphones, une marque optionnelle, un champ addresses[] qui arrive en texte libre avec localité, code postal, région et pays, une taxonomie avec une catégorie principale, et une valeur de confidence entre 0 et 1. Le thème des divisions contient 4 688 229 objets répartis en sous-types comté, localité, quartier, macro-quartier et micro-quartier, matière première pour répondre à « quelle ville, quelle région, quel quartier ceci est-il ».

Nous avons chargé un échantillon pour voir ce que coûte une réponse. Cette requête, exécutée avec DuckDB 1.5.6 le 2026-10-11 :

INSTALL spatial; INSTALL httpfs; LOAD spatial; LOAD httpfs;
SELECT count(*)
FROM read_parquet(
  's3://overturemaps-us-west-2/release/2026-09-23.1/theme=places/type=place/*.parquet',
  hive_partitioning = 1)
WHERE bbox.xmin >= -121.0 AND bbox.xmax <= -119.6
  AND bbox.ymin >= 38.7 AND bbox.ymax <= 39.5;

a renvoyé 28 166 lieux dans ce rectangle englobant du Tahoe en 2,77 secondes. L'élagage se fait sur la colonne struct bbox avant de toucher une seule géométrie, si bien que l'essentiel de la publication ne quitte jamais le S3. Dans le même échantillon, 896 lieux, soit 3,2 %, n'avaient pas de taxonomy.primary : une minorité assez faible pour l'enregistrer tranquillement plutôt que pour la craindre.

L'offre honnête du jour se lit donc ainsi. Géocoder en avant un commerce ou une requête de lieu vers un point, filtré par confidence. Géocoder en inverse une coordonnée vers l'échelle administrative. Ce qui n'est pas encore résoluble par Overture seul, c'est le numéro dans la rue, et cet écart a un nom et une taille.

Le thème des adresses compte 474 millions d'entités et reste en alpha

Le thème des adresses existe et il est vaste : 474 000 000 d'entités dans la version 2026-09-23.1. Il est aussi marqué alpha, ce que le projet Overture entend comme un avertissement et non comme une formalité. Deux conséquences. Le schéma peut encore bouger avant la disponibilité générale, et les enregistrements ne portent aucun identifiant GERS, donc aucune clé stable pour les jointures. Une clé de jointure, c'est la différence entre « la ligne a changé en amont » et « notre pipeline a cassé », et des données en alpha ne peuvent offrir que la seconde.

Jusqu'à ce que le thème passe en GA, un géocodeur bâti sur Overture répond à deux résolutions : un commerce vers un point, une coordonnée vers une ville ou une région. La rue entre les deux vient d'ailleurs. Le discours honnête, c'est un géocodage au niveau des lieux et des divisions, la promesse au niveau de la rue tenue en réserve tant que les données ne la méritent pas.

Deux géocodeurs communautaires, ce qu'ils prouvent et non

La première implémentation est pelias-overture, un importateur Pelias en Node.js sous licence MIT qui pousse les GeoParquet d'Overture dans Elasticsearch via le dbclient de Pelias. DuckDB fait la lecture, les adresses avec un rectangle englobant poussé dans la requête, les lieux filtrés par une confiance minimale que le README fixe par défaut à 0,7. La décision de conception à voler, c'est sa posture face au recouvrement : il tourne en addition des venues OSM et ne coupe jamais une autre source en silence, si bien que l'import Overture devient une nourriture de plus dans un géocodeur existant plutôt qu'une décision de remplacement à prendre d'un bloc. Statut : alpha, avec adresses et lieux fonctionnels de bout en bout.

La seconde est overture-geocoder, du Rust sur des Cloudflare Workers avec R2 pour le stockage et des fragments SQLite avec recherche plein texte FTS5, générés depuis les parquet S3 d'Overture avec DuckDB. La couverture de production est divisions d'abord, du pays à la localité, servie par un /search en avant, un /reverse fondé sur les rectangles englobants qui renvoie des estimations de confiance par rectangle, et une consultation d'identifiants GERS avec des locateurs épinglés par version. Le chemin places v2 est écrit et suspendu plutôt que livré, une retenue qui mérite d'être remarquée dans un écosystème qui livre d'habitude.

Ce projet publie aussi un benchmark, des cas de villes mondiales passés dans leur harnais de test, et nous vous devons son cadrage avant ses chiffres. C'est le harnais de ce projet, leurs villes de test, leur exécution. Nous ne l'avons pas rejoué et nous ne l'adoptons pas comme résultat à nous. Tel qu'il est publié :

Géocodeur (leur harnais)Ville reconnue en première positionLatence médiane
overture-geocoder80 %77 ms
Nominatim67 %65 ms
Photon67 %479 ms
La lecture que nous en tirons est la forme du résultat, pas la décimale : une pile libre de Workers, de R2 et de SQLite, alimentée par une version communautaire mensuelle, répond aux consultations de ville dans la même catégorie que le géocodeur libre installé de référence, qui garde l'avance sur la latence médiane. Deux projets communautaires indépendants, un importateur et un serveur, tournent l'un et l'autre sur des données que personne n'a payées.

Cinq limites, chacune avec sa parade

  1. Le thème des adresses est en alpha, le géocodage au niveau de la rue exige donc encore une autre source. Mélangez OpenStreetMap pour les numéros jusqu'à la disponibilité générale des adresses, dans la même posture d'addition que celle de pelias-overture, et appuyez-vous sur les registres nationaux là où vous opérez, comme la Base Adresse Nationale en France.
  2. Les adresses ne portent aucun identifiant GERS. Traitez les lignes d'adresses comme éphémères tant que les identifiants n'arrivent pas : fondez votre pipeline sur votre propre identité de registre et ne posez des jointures stables que là où un identifiant stable existe. Les lieux en portent déjà un, donc posez-y les jointures stables et nulle part trop tôt.
  3. La confidence est une estimation par lieu, et le seuil est une décision produit, pas une propriété des données. Tracez la distribution pour votre propre mix de requêtes avant de choisir un cutoff ; le 0,7 par défaut de pelias-overture est une décision d'emprunt. Là où les enjeux sont lourds, gardez les candidats et contredisez volontairement votre propre géocodeur, comme le fait la boucle de contre-vérification du billet sur le recensement.
  4. Le géocodage inverse sur les lieux est un POI le plus proche, pas une interpolation d'adresse. La coordonnée entre deux façades n'a dans ces données aucune vérité à interpoler. Renvoyez l'échelle des divisions comme réponse administrative, étiquetez le lieu touché comme le commerce le plus proche, et ne présentez ni l'un ni l'autre comme une adresse de rue.
  5. L'auto-hébergement fait tomber la garde sur votre bureau. Mettez en cache ce que vous interrogez deux fois, épinglez l'identifiant de version dans votre pipeline parce que les publications viennent chaque mois et que 2026-09-23.1 ne sera pas pour toujours le schéma de référence, et gardez un fournisseur géré derrière un commutateur de trop-plein jusqu'à ce que vos propres chiffres disent que le commutateur ne bascule jamais.
Les parades une et cinq semblent tirer dans deux directions, mélanger les sources et laisser un fournisseur dans la boucle, et elles le font, pour un temps. La migration est par étapes : un service de rue loué pendant que le thème des adresses mûrit, une résolution lieu et division auto-hébergée qui gagne votre confiance derrière le même trafic entre-temps.

Louer les numéros de rue, posséder le reste

Si votre flux de travail est fait de commerces et de frontières, mettez en cache les réponses que vous interrogez deux fois et lancez la migration sur une région, comme nous avons commencé par un rectangle du Tahoe. Si la moitié de votre trafic est faite de numéros de rue, restez en location sur exactement ce trafic, possédez le reste, et lisez les notes de version mensuelles à l'affût du jour où le thème des adresses cesse de dire alpha. L'emballage du géocodage file vers la gratuité. Le jugement sur votre propre mix de requêtes, non, et le tarif à l'appel n'a jamais vraiment servi à payer les faits.

AngoraTek construit des pipelines de données et des services géospatiaux auto-hébergés, avec la garde en prime. [Contactez-nous](/fr/#contact) quand vous voudrez une seconde paire de mains pour décider ce qu'il faut posséder.

Merci d'avoir lu jusqu'ici. Si cela ressemble au problème sur lequel vous butez, parlez-nous-en. Un fondateur lit chaque message.

Engager la conversation