あなたがリンクしたページは答えを示唆しています。バウンディングボックスの領域を見つけ、バケット領域で除算します。ただし、精度5の例を示していますが、各geohashバケットのサイズの計算方法は省略しています。
リンクしたページによると、クエリは10000バケットで停止します。
境界ボックスの面積を2乗の度数で計算します(これをkm単位で行わないでください。緯度/経度で維持してください)。
以下のスクリーンショットは、精度2の境界を示しています(色は精度1で分類されています)。
ただし、これらは実際にはタイルではありません-geohashは緯度/経度のエラーがあるポイントを表します-これらのエラーは時々経度と緯度で異なります(精度が均一の場合、緯度でエラーが大きくなります)
Pythonを少し使用して(Geohashライブラリを使用)、さまざまな精度の各「タイル」のサイズを推定しました。
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))
これは次の出力を与えます
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
したがって、1つのアプローチは、
- 緯度/経度ベースの境界ボックスの「面積」(平方度)を計算します
- 精度1から始めてそのテーブルを下に移動し、bbox領域(平方度)をその精度の領域で割ります。
- 許容可能な最小の除算値を持つ精度値を選択する
「許容範囲」を明確にするために:-
最良のパフォーマンスが得られる値を見つけるために実験する必要があります。