Como posso geocodificar para uma forma em vez de uma coordenada?

8

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?


fonte

Respostas:

6

Projeto legal! Você pode dar uma olhada no MapIt: Global :

MapIt é um serviço que mapeia pontos geográficos para áreas administrativas. Esta edição é baseada em dados de origem do projeto OpenStreetMap , totalmente incrível , então adicione seus limites se estiverem faltando. Se você estiver no Reino Unido, nosso MapIt UK com dados abertos da Pesquisa sobre Ordnance provavelmente será mais útil.

O MapIt é útil para qualquer pessoa que tenha as coordenadas de um ponto na Terra e que precise descobrir em que país, região, cidade, distrito ou estado em que se encontra. Também é ótimo para procurar as formas de todos esses limites.

O uso caritativo e de baixo volume deste serviço é gratuito - leia mais .

Você pode baixar a fonte no Github .

Precisa de uma licença? Leia mais ou entre em contato ([email protected]).

blah238
fonte
Isso é bem perto. Eu gostaria que eles permitissem pesquisas de string. Podemos praticamente fazer a mesma coisa com o Overpass.
Instalar o sistema inteiro em seus próprios servidores, que é a única maneira de usar os resultados comercialmente, parece ser um processo bastante complexo, conforme documentado em code.mapit.mysociety.org (eles recomendam 500 GB de espaço livre se usar o OSM). Esteja ciente de que uma das fontes que eles usam, o GADM, também possui uma restrição não comercial.
precisa
Eles têm licenciamento comercial de acordo com global.mapit.mysociety.org/licensing
blah238
1
@JustinY: Olá, sou um dos desenvolvedores que trabalhou no MapIt: Global. Acho que você viu que pode pesquisar por prefixos de string ( exemplo ). Se você quiser uma pesquisa difusa, sugiro que solicite isso no rastreador de problemas ? É um projeto de código aberto, portanto, mesmo se não tivermos tempo para trabalhar nisso, talvez um voluntário o faça.
Mark Longair
1
@MarkLongair Ótima sugestão. github.com/mysociety/mapit/issues/101
2

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) .

Rob Hoare
fonte
Obrigado por apontar que pode haver duas etapas. Se houvesse uma maneira fácil de usar o OSM para padronizar nomes, poderíamos resolver facilmente nosso problema (com os limites que o OSM tem disponível).
Neste ponto, não estamos muito preocupados em obter dados de qualidade. Precisamos principalmente das grandes áreas administrativas, como estados e países. Os dados do condado de qualidade seriam bons, mas não são necessários.
Nesse nível, até adm1 em cada país, Natural Earth é provavelmente a melhor opção para começar (os limites ADM0 e ADM1). Os arquivos SHP podem ser convertidos para GeoJSON ou vários outros formatos com ogr2ogr e outros utilitários similares.
precisa
Uau, de alguma forma eu perdi isso na sua resposta. Obrigado por apontar novamente.
2

Sua consulta Nominatim inclui um place_idcampo 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_levelchave, 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.

scai
fonte