Die Seite, auf die Sie verlinkt haben, gibt Hinweise auf die Antwort. Finden Sie den Bereich Ihres Begrenzungsrahmens und teilen Sie ihn durch den Eimerbereich. Es wird jedoch nicht angegeben, wie die Größe jedes Geohash-Eimers berechnet werden soll, obwohl ein Beispiel mit Genauigkeit 5 angegeben wird.
Entsprechend der Seite, auf die Sie verlinkt haben, wird die Abfrage bei 10000 Buckets gestoppt.
Berechnen Sie die Fläche Ihres Begrenzungsrahmens in Quadrat-Grad (versuchen Sie dies nicht in km, sondern halten Sie sie in Lat / Long).
Der Screenshot unten zeigt die Grenzen der Genauigkeit 2 (die Farbe wird nach Genauigkeit 1 kategorisiert).
Dies sind jedoch keine wirklichen Kacheln - ein Geohash stellt einen Punkt mit Fehlern in Lat / Lon dar - und diese Fehler variieren manchmal zwischen Längen- und Breitengrad (der Fehler ist bei Breitengraden größer, wenn die Genauigkeit gerade ist).
Verwendete ein bisschen Python (unter Verwendung der Geohash-Bibliothek ), um die Größe jeder 'Kachel' für verschiedene Präzisionen zu schätzen.
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))
Dies ergibt die folgende Ausgabe
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
Ein Ansatz wäre also:
- Berechnen Sie die "Fläche" (in Quadratgrad) Ihres Begrenzungsrahmens auf Lat / Lon-Basis
- Gehen Sie diese Tabelle ab Genauigkeit 1 durch und teilen Sie Ihren bbox-Bereich (in Quadratgrad) durch den Bereich für diese Genauigkeit
- Wählen Sie den Genauigkeitswert mit dem niedrigsten akzeptablen Teilungswert
Um "akzeptabel" zu klären: -
Ein sehr niedriger Teilungswert wie 0,001 bedeutet wahrscheinlich, dass die Genauigkeit zu niedrig ist. Sie werden nicht viele Eimer holen, aber viele entfernte Punkte in Betracht ziehen, die Sie nicht brauchen.
Für einen Wert über 10000 ist die Genauigkeit zu hoch. Sie werden mögliche Treffer verwerfen und eine langsamere Leistung erleiden.
Sie müssen experimentieren, um einen Wert zu finden, der die beste Leistung bietet.