Comment géocoder une forme au lieu d'une coordonnée?


8

Géocodage sur une forme au lieu d'un point

Le projet sur lequel je travaille actuellement est Find-A-Record . Nous géocodons les collections de documents généalogiques et les stockons dans un index spatial (parcourez notre blog si vous voulez en savoir plus). Les recherches sont basées sur une forme. Nous renvoyons les collections qui se croisent ou sont contenues dans la zone de recherche.

Pendant les premiers stades de développement, nous avons utilisé des noms géographiques pour géocoder des collections jusqu'à un certain point. Cela fonctionne bien pour les collections associées à des niveaux administratifs inférieurs tels que les villes, les villages et les villages. Cependant, cela tombe vraiment en panne lorsque vous obtenez le niveau du comté, de l'état et du pays.

Le recensement américain de 1940 est associé aux États-Unis et se verrait attribuer un point dans le nord du Kansas. Toutes les requêtes aux États-Unis qui ne sont pas proches de ce point ne renverront pas le recensement américain de 1940.

Pour résoudre ce problème, nous devons géocoder les collections avec une forme au lieu d'un point.

OSM

OpenStreetMaps possède les données dont nous avons besoin, mais il est extrêmement difficile de les extraire. La hiérarchie administrative n'est pas explicitement stockée. Nominatim est utilisé pour résoudre ce problème pour OSM une recherche Nominatim ne renvoie que des fonctionnalités. Une requête pour Knighton on Teme renvoie donc deux arrêts de bus mais pas la relation de frontière administrative.

L' API Overpass semblait prometteuse mais elle ne peut pas faire de correspondances de chaînes floues. Le viaduc ne peut faire que des correspondances exactes ou regex. Nous pourrions utiliser Overpass s'il y avait un moyen simple de standardiser les noms de lieux. En d'autres termes, si l'OSM nous a fourni un moyen de standardiser "Knighton on Teme, Worcestershire, Angleterre" à "Knighton on Teme CP, Malvern Hills, Worcestershire, West Midlands, Angleterre, Royaume-Uni" selon la hiérarchie OSM, alors chaîne floue l'appariement ne serait pas nécessaire.

Sommaire

Ce dont nous avons besoin, c'est d'un service qui nous permette d'effectuer des recherches de chaînes floues pour un lieu (ou niveau administratif) et de récupérer ses limites.

Nous reconnaissons qu'il sera difficile d'obtenir des données sur les limites pour le monde entier. Heureusement, nous n'aurons probablement pas besoin de bientôt. Nous n'avons besoin de données que pour les régions du monde où existent des documents généalogiques et où les généalogistes font des recherches.

Il semble que nous devrons créer notre propre service qui indexe OSM de manière à nous permettre d'interroger les limites administratives. Mais nous préférerions vraiment ne pas le faire. Existe-t-il un autre moyen de récupérer ces données avec les services existants?

Réponses:


6

Projet sympa! Vous pouvez jeter un œil à MapIt: Global :

MapIt est un service qui cartographie les points géographiques en zones administratives. Cette édition est basée sur les données sources du projet OpenStreetMap totalement incroyable , alors ajoutez-y vos limites si elles manquent. Si vous êtes au Royaume-Uni, notre MapIt UK avec des données ouvertes de l'Ordnance Survey sera probablement plus utile.

MapIt est utile pour quiconque a les coordonnées d'un point sur Terre et qui a besoin de savoir dans quel pays, région, ville, circonscription ou état il se trouve. Il est également idéal pour rechercher les formes de toutes ces frontières.

L'utilisation caritative et à faible volume de ce service est gratuite - en savoir plus .

Vous pouvez télécharger la source sur Github .

Besoin d'une licence? Pour en savoir plus ou contactez-nous (commercial@mysociety.org).


C'est assez proche. J'aimerais qu'ils autorisent les recherches de chaînes cependant. Nous pouvons à peu près la même chose avec Overpass.

L'installation de l'ensemble du système sur vos propres serveurs, qui est la seule façon d'utiliser les résultats à des fins commerciales, semble être un processus assez complexe, comme indiqué sur code.mapit.mysociety.org (ils recommandent 500 Go d'espace libre si vous utilisez OSM). Sachez que l'une des sources qu'ils utilisent, GADM, a également une restriction non commerciale.
Rob Hoare

Ils ont des licences commerciales selon global.mapit.mysociety.org/licensing
blah238

1
@JustinY: Salut, je suis l'un des développeurs qui ont travaillé sur MapIt: Global. Je suppose que vous avez vu que vous pouvez rechercher par préfixes de chaîne ( exemple ) - si vous souhaitez une recherche floue, puis-je vous suggérer de demander cela dans le suivi des problèmes ? C'est un projet open source, donc même si nous n'avons pas le temps d'y travailler, peut-être qu'un volontaire le fera.
Mark Longair

1
@MarkLongair Grande suggestion. github.com/mysociety/mapit/issues/101

2

Je travaille également avec des noms de lieux mondiaux et des données de limites (y compris historiques) à l'heure actuelle, donc je comprends ce que vous traversez!

Cependant, je pense qu'il y a vraiment deux étapes à votre problème: 1. utilisez une recherche de nom floue pour transformer le nom d'une zone d'administration en quelque chose de standard, puis 2. recherchez les limites de cet endroit dans des bases de données de limites. Plutôt que d'essayer de trouver des données qui ont également une recherche floue.

WeRelate Places peut aider à l'étape 1 pour les anciens noms de lieux, et de nombreux autres géocodeurs comme vous utilisez déjà peuvent standardiser les noms modernes.

L'étape 2 est vraiment difficile à l'heure actuelle, car la plupart des données sur les limites appropriées sont sous licence non commerciale (ou pire), en particulier pour les données historiques. La Terre naturelle est un point de départ pour les pays et les niveaux d'administration 1 .

Ensuite, il existe des sources nationales pour les divisions administratives inférieures, qui sont extraites de données publiques ouvertes, telles que USGeoJSON et uk-atlas . Rien de ce que je sais n'est vraiment de portée mondiale.

Faites attention à retracer la provenance des données et de la licence, une restriction non commerciale est très courante, par exemple pour GADM , Vision of Britain et (US) Atlas of Historical County Boundaries .


Merci d'avoir souligné qu'il pourrait y avoir deux étapes. S'il y avait un moyen facile d'utiliser OSM pour normaliser les noms, nous pourrions facilement résoudre notre problème (avec les limites qu'OSM a à disposition).

À ce stade, nous ne sommes pas très préoccupés par l'obtention de données de qualité. Nous avons surtout besoin des grandes zones d'administration telles que les États et les pays. Des données de qualité sur le comté seraient bien mais ce n'est pas nécessaire.

À ce niveau, jusqu'à adm1 dans chaque pays, Natural Earth est probablement votre meilleure option pour commencer (les limites ADM0 et ADM1). Les fichiers SHP peuvent être convertis en GeoJSON ou divers autres formats avec ogr2ogr et d'autres utilitaires similaires.
Rob Hoare

Wow, d'une manière ou d'une autre, j'ai raté cela dans votre réponse. Merci de l'avoir souligné à nouveau.

2

Votre requête Nominatim comprend un place_idchamp qui a la valeur 4828147 dans votre exemple. Ce champ sert d'identifiant interne pour Nominatim (il n'est donc pas unique au monde). Mais il peut être utilisé pour afficher la hiérarchie d'adresses internes de Nominatim pour ce lieu . Cette hiérarchie contient également des relations de frontière, par exemple la relation 1875245 et plusieurs autres.

En parcourant cette liste et en regardant la admin_levelclé, il devrait être possible de trouver la relation que vous recherchez. Malheureusement, cette page spéciale ne semble pas encore être disponible via une API.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.