¿Cómo obtener el geohash de un cuadro delimitador?

8

Estoy almacenando una gran colección de valores de geohash de 5m x 5m. Quiero poder consultar esta colección y encontrar todos los valores de geohash que se encuentran dentro de un georrecto particular, que se define por 2 puntos de latitud, un punto NO y un punto SW.

Lo que no entiendo es esto: digamos que tengo todas mis ubicaciones en el almacén de datos (junto con una latitud, longitud y un geohash (con alta precisión) de cada ubicación).

Sé que debo usar el prefijo del geohash (para que coincida con las ubicaciones dentro), pero ¿cómo calculo un geohash de un cuadro delimitador? Teniendo en cuenta que el cuadro delimitador se compone de dos puntos, Nordeste y Sudoeste, no entiendo cómo hacerlo.

Para poder consultar qué ubicaciones deben devolverse para el cuadro delimitador visible actualmente, necesito el geohash del cuadro delimitador visible / visible: ahora sé que puedo geohash la ubicación del centro en el mapa visible, pero no sé cómo muchas letras para cortar (para reducir la precisión) para lograr 'un ajuste' al cuadro delimitador real. (¿O tal vez esa no es la forma ...?)

¿Qué haces cuando el contenedor del cuadro delimitador se geoheshes? (como en el medio del área visible se divide entre 'dqcjr0' y 'dqcjqb')

Además, supongamos que tengo un geohash de 5 letras, ¿cómo puedo convertirlo nuevamente en un cuadro delimitador visible? o en otras palabras, ¿cómo sé qué está 'incluido' en el hash y qué hay en los hashes adyacentes?

jcm
fuente

Respuestas:

2

La siguiente es una de las soluciones que pude encontrar.

Hay 12 niveles de un geohash. El tamaño varía de
5,009.4km x 4,992.6km en el nivel 1 a
3.7cm x 1.9cm en el nivel 12 .

Lo primero es que necesitas arreglar un nivel.

Obtenga el punto central del cuadro delimitador. Una vez que tenga la distancia máxima desde el centro y el tamaño del geohash, encuentre puntos de cuadrícula dentro del cuadro a distancia (el tamaño del geohash).

Convierte puntos de cuadrícula a geohash.

Compartiré el enlace de mi proyecto de código abierto que hace algo similar. (Necesita alguna mejora antes de presionar el código :-))

En su segunda pregunta, convertir un geohash de nuevo en un par nos da el centro del área de geohash * (un área rectangular) *.

Dado el tamaño del geohash en ese nivel, puede obtener un cuadro delimitador.

Espero que esto ayude.

Ashwin Nair
fuente