¿Cómo puedo geocodificar una forma en lugar de una coordenada?

8

Geocodificación a una forma en lugar de un punto

El proyecto en el que estoy trabajando actualmente es Find-A-Record . Estamos geocodificando colecciones de registros genealógicos y almacenándolos en un índice espacial (explore nuestro blog si desea obtener más información). Las búsquedas se basan en una forma. Devolvemos colecciones que se cruzan o están contenidas dentro del área de búsqueda.

Durante los primeros estados de desarrollo, utilizamos geonames para geocodificar colecciones hasta cierto punto. Esto funciona bien para colecciones que están asociadas con niveles administrativos más bajos, como ciudades, pueblos y aldeas. Sin embargo, realmente se descompone cuando obtienes el nivel de condado, estado y país.

El censo estadounidense de 1940 está asociado con los Estados Unidos y se le asignaría un punto en el norte de Kansas. Cualquier consulta dentro de los Estados Unidos que no esté cerca de ese punto no devolverá el Censo de los Estados Unidos de 1940.

Para resolver esto, necesitamos geocodificar colecciones con una forma en lugar de un punto.

OSM

OpenStreetMaps tiene los datos que necesitamos, pero es extremadamente difícil de extraer. La jerarquía administrativa no se almacena explícitamente. Nominatim se utiliza para resolver este problema para OSM. Una búsqueda de Nominatim solo devuelve características. Entonces, una consulta para Knighton en Teme devuelve dos paradas de autobús, pero no la relación de límite administrativo.

La API Overpass parecía prometedora, pero no puede hacer coincidencias de cadenas difusas. Overpass solo puede hacer coincidencias exactas o expresiones regulares. Podríamos usar Overpass si hubiera una manera fácil de estandarizar los nombres de lugares. En otras palabras, si OSM nos proporcionó una manera de estandarizar "Knighton on Teme, Worcestershire, Inglaterra" a "Knighton on Teme CP, Malvern Hills, Worcestershire, West Midlands, Inglaterra, Reino Unido" de acuerdo con la jerarquía OSM, entonces una cadena difusa la correspondencia no sería necesaria.

Resumen

Lo que necesitamos es un servicio que nos permita realizar búsquedas de cadenas difusas para un lugar (o nivel administrativo) y recuperar sus límites.

Reconocemos que será difícil obtener datos de límites para todo el mundo. Afortunadamente, probablemente no lo necesitemos pronto. Solo necesitamos datos para las áreas del mundo donde existen registros genealógicos y los genealogistas investigan.

Parece que necesitaremos construir nuestro propio servicio que indexe OSM de tal manera que nos permita consultar los límites administrativos. Pero realmente preferiríamos no hacerlo. ¿Hay alguna otra forma de recuperar estos datos con los servicios existentes?


fuente

Respuestas:

6

Proyecto genial! Puede echar un vistazo a MapIt: Global :

MapIt es un servicio que asigna puntos geográficos a áreas administrativas. Esta edición se basa en datos de origen del increíble proyecto OpenStreetMap , por lo tanto, agregue sus límites allí si faltan. Si está en el Reino Unido, nuestro MapIt UK con datos abiertos de la Encuesta de artillería probablemente será más útil.

MapIt es útil para cualquiera que tenga las coordenadas de un punto en la Tierra y que necesite averiguar en qué país, región, ciudad, circunscripción o estado se encuentra. También es ideal para buscar las formas de todos esos límites.

El uso benéfico de bajo volumen de este servicio es gratuito. Lea más .

Puede descargar la fuente en Github .

¿Necesitas una licencia? Lea más o póngase en contacto ([email protected]).

blah238
fuente
Eso está muy cerca. Sin embargo, desearía que permitieran búsquedas de cadenas. Podemos hacer lo mismo con Overpass.
La instalación de todo el sistema en sus propios servidores, que es la única forma de utilizar los resultados comercialmente, parece ser un proceso bastante complejo como se documenta en code.mapit.mysociety.org (recomiendan usar 500 GB de espacio libre si se usa OSM). Tenga en cuenta que una de las fuentes que utilizan, GADM, también tiene una restricción no comercial.
Rob Hoare
Tienen licencia comercial de acuerdo con global.mapit.mysociety.org/licensing
blah238
1
@JustinY: Hola, soy uno de los desarrolladores que trabajó en MapIt: Global. Supongo que has visto que puedes buscar por prefijos de cadena ( ejemplo ). Si deseas realizar búsquedas difusas, ¿puedo sugerirte que lo solicites en el rastreador de problemas ? Es un proyecto de código abierto, por lo que incluso si no tenemos tiempo para trabajar en eso, quizás lo haga un voluntario.
Mark Longair
1
@MarkLongair Gran sugerencia. github.com/mysociety/mapit/issues/101
2

También estoy trabajando con nombres de lugares globales y datos de límites (incluidos los históricos) en este momento, ¡así que entiendo por lo que estás pasando!

Sin embargo, creo que realmente hay dos pasos para su problema: 1. use una búsqueda de nombres difusos para convertir el nombre de un área de administración en algo estándar, luego 2. busque los límites de ese lugar en las bases de datos de límites. En lugar de tratar de encontrar datos que también tienen una búsqueda difusa.

WeRelate Places podría ayudar con el paso 1 para los nombres de lugares antiguos, y muchos otros geocodificadores como los que ya usa pueden estandarizar los nombres modernos.

El paso 2 es realmente difícil en la actualidad, ya que gran parte de los datos de límites adecuados están bajo una licencia no comercial (o peor), especialmente para datos históricos. Un punto de partida para los países y los niveles de administración 1 es Natural Earth .

Luego están las fuentes nacionales para las divisiones administrativas inferiores, que se extraen de los datos del gobierno abierto, como USGeoJSON y uk-atlas . Nada de lo que tenga conocimiento es realmente de alcance global.

Tenga cuidado de rastrear la procedencia de los datos y la licencia, una restricción no comercial es muy común, por ejemplo para GADM , Visión de Gran Bretaña y Atlas (Estados Unidos) de límites históricos del condado .

Rob Hoare
fuente
Gracias por señalar que podría haber dos pasos. Si hubiera una manera fácil de usar OSM para estandarizar nombres, entonces podríamos resolver fácilmente nuestro problema (con los límites que OSM tiene disponibles).
En este punto no estamos terriblemente preocupados por obtener datos de calidad. Necesitamos principalmente las grandes áreas administrativas, como estados y países. Los datos de calidad del condado serían buenos, pero no son necesarios.
En ese nivel, hasta adm1 en cada país, Natural Earth es probablemente su mejor opción para comenzar (los límites ADM0 y ADM1). Los archivos SHP se pueden convertir a GeoJSON u otros formatos con ogr2ogr y otras utilidades similares.
Rob Hoare
Wow, de alguna manera me perdí eso en tu respuesta. Gracias por señalarlo de nuevo.
2

Su consulta de Nominatim incluye un place_idcampo que tiene el valor 4828147 en su ejemplo. Este campo sirve como un identificador interno para Nominatim (por lo que no es globalmente único). Pero se puede usar para ver la jerarquía de direcciones internas de Nominatim para este lugar . Esta jerarquía también contiene relaciones de límites, por ejemplo, la relación 1875245 y varias otras.

Al recorrer esta lista y mirar la admin_levelclave, debería ser posible encontrar la relación que está buscando. Lamentablemente, esta página especial aún no parece estar disponible a través de una API.

scai
fuente