En s'appuyant sur un travail antérieur utilisant un carnet ArcGIS Pro pour ETL les données Overture Maps Foundation dans ArcGIS, ce billet examine le thème Addresses d'Overture Map Foundation, à la fois comme une couche prête pour la carte et un localisateur de géocodage capable de sous-adresses. Au moment de la rédaction, les données sont en version alpha, mais vous pouvez les consulter avec le carnet ArcGIS Pro (dans le téléchargement du billet), qui est configuré pour extraire les points d'adresse en Californie, USA - un peu plus de 14 millions d'entités. Les voici, avec des métadonnées également créées par le carnet :
14 millions de points d'adresse en Californie
Il existe de nombreuses utilisations pour les points d'adresse (couche cartographique, entités proches, jointures d'entités, source géométrique pour l'édition...), mais celle que je souhaite mettre en avant, et qui est mentionnée par Overture comme un flux de travail cible, est le géocodage - transformer les détails d'une adresse en emplacements sur la carte, comme vous le voyez ici pour l'adresse "1000 Pine Ave Unit 109 Redlands CA 92373".
Géocodage avec Overture Addresses
Cela semble toujours magique que vous puissiez convertir un dialecte local d'adresse en coordonnées, et bien qu'il y ait quelques « lacunes » pays dans le thème Addresses actuel, là où les données d'un pays sont peuplées elles sont complètes et mises à jour mensuellement. Voyons comment accéder aux données !
SpoilerNote : Les produits de géocodage d'Esri, tels que le ArcGIS World Geocoding Service, peuvent contenir les mêmes données de référence que le thème Addresses d'Overture.
J'utilise un carnet ArcGIS Pro 3.5, utilisant uniquement les modules runtime par défaut, y compris DuckDB. Overture propose les données sous forme de fichiers GeoParquet dans un stockage hive S3 (ce qui signifie que l'ensemble logique unique des adresses existe sous un nombre arbitraire de fichiers parquet individuels que vous spécifiez comme chemin glob (joker), comme cette requête SQL envoyée à DuckDB :
select * from read_parquet('s3://overturemaps-us-west-2/release/2025-09-24.0/theme=addresses/type=address/*.parquet',filename=false, hive_partitioning=1)Le carnet détermine automatiquement le chemin vers les dernières données.
Comme nous ne sommes intéressés que par un sous-ensemble des données d'adresses disponibles, nous fournissons une clause "where" dans le carnet qui filtre les enregistrements à lire, voici la mienne pour obtenir uniquement les données californiennes :
where country = 'US' and address_levels[1].value = 'CA' and number is not null and street is not null
Vous remarquerez un terme qui interroge une colonne structuré, address_levels, qui est un tableau indexé à partir de 1 contenant jusqu'à trois valeurs de zone en taille décroissante, comme province, ville, quartier. Cela variera selon le pays et c'est à vous de comprendre. Peu de pays utilisent les trois niveaux. En effet, certaines colonnes peuvent ne pas être remplies du tout, soit parce que les données ne sont pas disponibles auprès du contributeur ou sont inutilisées dans le pays, par exemple postal_city ou postcode.
Dans le carnet, le tableau address_levels est réordonné de grand-parent-parent-enfant dans la source à enfant-parent-grand-parent dans les données de sortie, car c'est ainsi que les adresses sont généralement données, des zones petites aux plus grandes, par exemple "380 New York St Redlands CA 92373".
Je vous laisse explorer le carnet pour d'autres détails, par exemple une boîte englobante autour de chaque point d'adresse est calculée pour offrir une expérience de zoom plus utilisable lors de la localisation d'une adresse. Le carnet créera un localisateur dans votre dossier projet ou le reconstruira avec de nouvelles données s'il existe déjà. Pour utiliser l'option de reconstruction, supprimez d'abord le localisateur existant de votre projet afin de libérer les verrous sur ce fichier. Le traitement des données californiennes prend environ 45 minutes, incluant une étape d'environ 5 minutes où les champs rue, unité et zone sont mis en casse cohérente - pour l'apparence :
Mise en casse cohérente des champs texte
Lorsque vous arrivez à la cellule qui crée ou reconstruit le localisateur, sauf si vous êtes aux États-Unis vous voudrez remplacer le code par quelque chose destiné à votre pays. Le code de la cellule a été construit en copiant la commande Python depuis une exécution manuelle de Create Locator dans la cellule ; vous pouvez faire pareil.
N'hésitez pas à commenter ce billet avec vos observations ou questions.<\/STRONG>