La página que enlaza a los consejos en la respuesta; encontrar el área de su cuadro delimitador y dividir por el cubo de la zona. Se deja fuera cómo calcular el tamaño de cada geohash cubo, a pesar de que, aunque se da un ejemplo con precisión 5.
De acuerdo a la página que enlaza a, se va a dejar la consulta en 10000 cubos.
Calcular el área de su cuadro delimitador en grados cuadrados (no intente hacer esto en km, mantenerlo en lat/long)
La siguiente captura de pantalla muestra los límites de la precisión 2 (el color es categorizada por la precisión 1).
![enter image description here]()
Estos no son realmente los azulejos, aunque geohash representa un punto con errores en lat/lon - y esos errores a veces varían entre la longitud y la latitud (el error es mayor con latitudes, cuando la precisión es aún)
Utiliza un poco de Python (utilizando el Geohash biblioteca) para estimar el tamaño de cada baldosa para diferentes precisiones.
from Geohash import geohash
strg = geohash.encode(56.9,-3.2,precision=15)
for prec in range(1,10):
y,x,yerror,xerror = geohash.decode_exactly(strg[:prec])
xsize = 2*xerror
ysize = 2*yerror
area = xsize*ysize
print("Precision {}".format(prec))
print("\tSize approx {} long by {} lat".format(xsize,ysize))
print("\tArea is {}".format(area))
esto da el siguiente resultado
Precision 1
Size approx 45.0 long by 45.0 lat
Area is 2025.0
Precision 2
Size approx 11.25 long by 5.625 lat
Area is 63.28125
Precision 3
Size approx 1.40625 long by 1.40625 lat
Area is 1.9775390625
Precision 4
Size approx 0.3515625 long by 0.17578125 lat
Area is 0.061798095703125
Precision 5
Size approx 0.0439453125 long by 0.0439453125 lat
Area is 0.0019311904907226562
Precision 6
Size approx 0.010986328125 long by 0.0054931640625 lat
Area is 6.034970283508301e-05
Precision 7
Size approx 0.001373291015625 long by 0.001373291015625 lat
Area is 1.885928213596344e-06
Precision 8
Size approx 0.00034332275390625 long by 0.000171661376953125 lat
Area is 5.893525667488575e-08
Así que un enfoque podría ser,
- calcular el "área" (en grados cuadrados) de su (lat/lon basado cuadro delimitador
- ir abajo de la tabla, a partir de precisión 1, y dividir el bbox área (en grados cuadrados) por la zona para que la precisión
- elija el valor de precisión con el mínimo admisible de la división de valor
Para aclarar 'aceptable':-
un muy bajo valor de división como 0.001 probablemente significa que la precisión es muy baja. Usted no va a ser la recuperación de muchos de los cubos, pero se le considera una gran cantidad de puntos alejados usted no necesita.
Para un valor de más de 10000, la precisión es muy alta. Usted será descartando posibles golpes, y sufren un rendimiento más lento.
Tendrás que experimentar para encontrar un valor que da el mejor rendimiento.