Bagaimana cara mendapatkan geohash dari kotak pembatas?

8

Saya menyimpan banyak koleksi nilai geohash 5m x 5m. Saya ingin dapat menanyakan koleksi ini dan menemukan semua nilai geohash yang termasuk dalam georect tertentu - yang didefinisikan oleh 2 titik lintang - titik NW dan titik SW.

Yang tidak saya mengerti adalah ini: katakanlah saya memiliki semua lokasi saya di penyimpanan data (bersama dengan garis lintang, bujur dan geohash (dengan presisi tinggi) dari setiap lokasi.)

Saya tahu bahwa saya harus menggunakan awalan geohash (untuk mencocokkan lokasi di dalam), tetapi bagaimana cara menghitung geohash dari kotak pembatas? Mempertimbangkan kotak pembatas terdiri dari dua titik, Timur Laut dan Barat Daya, saya tidak mengerti bagaimana cara melakukan ini ..

Agar saya dapat menanyakan lokasi mana yang harus dikembalikan untuk kotak pembatas yang terlihat saat ini, saya memerlukan geohash dari kotak pembatas yang terlihat / dapat dilihat - Sekarang saya tahu saya dapat melakukan geohash lokasi pusat pada peta yang dapat dilihat, tetapi saya tidak tahu caranya banyak huruf untuk memotong (untuk mengurangi presisi) untuk mencapai 'cocok' dengan kotak pembatas yang sebenarnya. (Atau mungkin bukan itu caranya ...?)

Apa yang Anda lakukan ketika kotak kontainer berlari ke geohash? (seperti di tengah area yang dapat dilihat, ia terbagi antara 'dqcjr0' dan 'dqcjqb')

Juga, mari kita asumsikan saya memiliki geohash 5 huruf, bagaimana saya bisa mengubahnya kembali menjadi kotak pembatas yang dapat dilihat? atau dengan kata lain, bagaimana saya tahu apa yang 'termasuk' dalam hash, dan apa yang ada di hash yang berdekatan?

jcm
sumber

Jawaban:

2

Berikut ini adalah salah satu solusi yang bisa saya temukan.

Ada 12 level geohash. Ukurannya bervariasi dari
5.009,4 km x 4.992,6 km di level 1 hingga
3.7cm x 1.9cm di level 12 .

Hal pertama, Anda perlu memperbaiki level.

Dapatkan titik pusat dari kotak pembatas. Setelah Anda memiliki jarak maks dari pusat dan ukuran geohash, cari titik kisi di dalam kotak pada jarak (ukuran geohash).

Konversi poin grid ke geohash.

Akan membagikan tautan proyek open source saya yang melakukan hal serupa. (Perlu beberapa perbaikan sebelum saya mendorong kode :-))

Pada pertanyaan kedua Anda, mengubah geohash kembali menjadi pasangan memberi kami pusat area geohash * (area persegi panjang) *.

Mengingat ukuran geohash di tingkat itu, Anda bisa mendapatkan sendiri kotak pembatas.

Semoga ini membantu.

Ashwin Nair
sumber