Como obter a geohash de uma caixa delimitadora?

8

Estou armazenando uma grande coleção de valores de 5m x 5m de geohash. Desejo poder consultar esta coleção e encontrar todos os valores de geohash que se enquadram em uma determinada georreferência - definida por 2 pontos de latitude - um ponto NW e um ponto SW.

O que não entendo é o seguinte: digamos que tenho todos os meus locais no repositório de dados (junto com uma latitude, longitude e uma geohash (com alta precisão) de cada local).

Sei que devo usar o prefixo da geohash (para corresponder aos locais), mas como calcular uma geohash de uma caixa delimitadora? Considerando que a caixa delimitadora é composta de dois pontos, Nordeste e Sudoeste, eu não entendo como proceder.

Para consultar quais locais devem ser retornados para a caixa delimitadora atualmente visível, preciso da geohash da caixa delimitadora visível / visível - Agora eu sei que posso fazer a geohash da localização central no mapa visível, mas não sei como muitas letras para cortar (para reduzir a precisão) para obter um 'ajuste' na caixa delimitadora real. (Ou talvez não seja assim ...?)

O que você faz quando o contêiner da caixa delimitadora faz geohashes? (como no meio da área visível, ele se divide entre 'dqcjr0' e 'dqcjqb')

Além disso, vamos supor que eu tenha uma geohash de 5 letras. Como posso convertê-lo novamente em uma caixa delimitadora visível? ou, em outras palavras, como sei o que está 'incluído' no hash e o que está nos hashes adjacentes?

jcm
fonte

Respostas:

2

A seguir, é uma das soluções que pude encontrar.

Existem 12 níveis de uma geohash. O tamanho varia de
5.009,4 km x 4.992,6 km no nível 1 a
3,7 cm x 1,9 cm no nível 12 .

Primeira coisa, você precisa corrigir em um nível.

Obtenha o ponto central da caixa delimitadora. Depois de ter a distância máxima do centro e o tamanho da geohash, encontre pontos de grade dentro da caixa à distância (o tamanho da geohash).

Converta pontos de grade em geohash.

Compartilhará o link do meu projeto de código aberto que faz algo semelhante. (Precisa de alguma melhoria antes de eu enviar o código :-))

Na sua segunda pergunta, converter uma geohash novamente em um par nos dá o centro da área de geohash * (uma área retangular) *.

Dado o tamanho da geohash nesse nível, você pode obter uma caixa delimitadora.

Espero que isto ajude.

Ashwin Nair
fonte