Geocodificação para uma forma em vez de um ponto
O projeto no qual estou trabalhando atualmente é Find-A-Record . Estamos geocodificando coleções de registros genealógicos e armazenando-as em um índice espacial (navegue em nosso blog se quiser saber mais). As pesquisas são baseadas em uma forma. Retornamos coleções que se cruzam ou estão contidas na área de pesquisa.
Durante os primeiros estados de desenvolvimento, usamos nomes geográficos para geocodificar coleções até certo ponto. Isso funciona bem para coleções associadas a níveis administrativos mais baixos, como cidades, vilas e aldeias. No entanto, ele realmente falha quando você obtém o nível do condado, estado e país.
O Censo dos EUA de 1940 está associado aos Estados Unidos e receberia um ponto no norte do Kansas. Quaisquer consultas nos EUA que não estejam próximas desse ponto não retornarão o Censo dos EUA de 1940.
Para resolver isso, precisamos geocodificar coleções com uma forma em vez de um ponto.
OSM
O OpenStreetMaps possui os dados de que precisamos, mas é extremamente difícil de extrair. A hierarquia administrativa não é armazenada explicitamente. O Nominatim é usado para resolver esse problema no OSM. Uma pesquisa Nominatim retorna apenas recursos. Portanto, uma consulta a Knighton em Teme retorna dois pontos de ônibus, mas não a relação de fronteira administrativa.
A API Overpass parecia promissora, mas não pode executar correspondências difusas. O viaduto só pode fazer correspondências exatas ou regex. Poderíamos usar o Overpass se houvesse uma maneira fácil de padronizar nomes de locais. Em outras palavras, se a OSM fornecesse uma maneira de padronizar "Knighton em Teme, Worcestershire, Inglaterra" para "Knighton em Teme CP, Malvern Hills, Worcestershire, West Midlands, Inglaterra, Reino Unido", de acordo com a hierarquia da OSM e a sequência difusa a correspondência não seria necessária.
Sumário
O que precisamos é de um serviço que nos permita realizar pesquisas de strings fuzzy para um local (ou nível administrativo) e recuperar seus limites.
Reconhecemos que será difícil obter dados de fronteira para o mundo inteiro. Felizmente, provavelmente não precisaremos tão cedo. Precisamos apenas de dados para áreas do mundo em que existem registros genealógicos e os genealogistas pesquisam.
Parece que precisaremos criar nosso próprio serviço, que indexa o OSM de maneira a permitir a consulta de limites administrativos. Mas nós realmente preferimos não. Existe alguma outra maneira de recuperar esses dados com os serviços existentes?
Também estou trabalhando com nomes de places e dados de limites globais (incluindo históricos) no momento, para entender o que você está passando!
No entanto, acho que existem realmente duas etapas para o seu problema: 1. use uma pesquisa de nome difuso para transformar o nome de uma área administrativa em algo padrão; depois, 2. procure os limites desse local nos bancos de dados de limites. Em vez de tentar encontrar dados que também possuem uma pesquisa difusa.
O WeRelate Places pode ajudar na etapa 1 de nomes de locais antigos, e muitos outros geocodificadores que você já usa podem padronizar nomes modernos.
A Etapa 2 é realmente difícil no momento, pois muitos dos dados de limite adequados estão sob uma licença não comercial (ou pior), especialmente para dados históricos. Um ponto de partida para países e níveis administrativos 1 é a Terra Natural .
Depois, existem fontes nacionais para divisões administrativas inferiores, que são extraídas de dados abertos do governo, como USGeoJSON e atlas do Reino Unido . Nada do que estou ciente é realmente global em escopo.
Tenha cuidado para rastrear a proveniência dos dados e da licença, uma restrição não comercial é muito comum, por exemplo, para GADM , Vision of Britain e Atlas dos limites históricos do condado (EUA) .
fonte
Sua consulta Nominatim inclui um
place_id
campo que possui o valor 4828147 no seu exemplo. Este campo serve como um identificador interno para o Nominatim (portanto, não é globalmente exclusivo). Mas pode ser usado para visualizar a hierarquia interna de endereços do Nominatim para este local . Essa hierarquia também contém relações de limite, por exemplo, a relação 1875245 e várias outras.Percorrendo esta lista e olhando para a
admin_level
chave, deve ser possível encontrar a relação que você está procurando. Infelizmente, essa página especial ainda não parece estar disponível por meio de uma API.fonte