Halaman yang Anda tautkan ke petunjuk pada jawabannya; temukan area kotak pembatas Anda dan bagi dengan area ember. Itu meninggalkan bagaimana menghitung ukuran masing-masing ember geohash, meskipun, memberikan contoh dengan presisi 5.
Menurut halaman yang Anda tautkan, itu akan menghentikan permintaan pada 10.000 ember.
Hitung luas kotak pembatas Anda dalam derajat kuadrat (jangan mencoba melakukan ini dalam km, pertahankan dalam lat / long)
Tangkapan layar di bawah ini menunjukkan batas ketelitian 2 (warnanya dikategorikan berdasarkan ketelitian 1).
Ini bukan ubin sebenarnya - geohash mewakili suatu titik dengan kesalahan dalam lat / lon - dan kesalahan itu kadang-kadang akan bervariasi antara bujur dan lintang (kesalahan lebih besar dengan lintang, ketika presisi genap)
Menggunakan sedikit Python (menggunakan perpustakaan Geohash ) untuk memperkirakan ukuran masing-masing 'ubin' untuk precision yang berbeda.
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))
ini memberikan output berikut
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
Jadi satu pendekatan akan menjadi,
- hitung "area" (dalam derajat persegi) dari kotak pembatas berbasis lat / lon Anda
- turunkan meja itu, mulai dari presisi 1, dan bagi area bbox Anda (dalam derajat persegi) dengan area untuk presisi itu
- pilih nilai presisi dengan nilai pembagian terendah yang dapat diterima
Untuk memperjelas 'dapat diterima': -
nilai pembagian yang sangat rendah seperti 0,001 mungkin berarti ketepatannya terlalu rendah. Anda tidak akan mengambil banyak ember, tetapi akan mempertimbangkan banyak poin jauh yang tidak perlu Anda lakukan.
Untuk nilai di atas 10.000, presisi terlalu tinggi. Anda akan membuang kemungkinan hit, dan mengalami kinerja yang lebih lambat.
Anda harus bereksperimen untuk menemukan nilai yang memberikan kinerja terbaik.