Encoder & Decoder Geohash
Privasi sejak awal — berjalan sepenuhnya di peramban Anda
Pada mode encode masukkan lintang dan bujur (dengan slider presisi) untuk mendapatkan string geohash. Pada mode decode tempel sebuah hash untuk melihat koordinat pusat serta batas barat daya/timur laut selnya. Berguna untuk indeks spasial, pencarian berdasarkan kedekatan, dan penyimpanan lokasi yang dipseudonimkan.
Apa yang sebenarnya dienkode geohash
Geohash menyilang bit lintang dan bujur lalu mengkodenya dalam base32 dengan alfabet khusus (0-9 dan b-z tanpa a/i/l/o). Setiap karakter memberi 5 bit presisi, bergantian antara penyempurnaan bujur dan lintang. Hasilnya string pendek aman-URL yang relasinya menggambarkan keterpisahan spasial: setiap geohash yang diawali "dr5ru" berada di dalam sel bernama dr5ru.
Presisi dan ukuran sel
Pada presisi 1, dunia dibagi menjadi 32 sel berukuran sekitar 5.000 km. Presisi 5 (~ 4,9 km di khatulistiwa) cocok untuk pengelompokan sekala lingkungan. Presisi 9 (~ 5 m) tepat untuk satu gedung. Presisi 12 turun ke sekitar 4 cm dan jarang diperlukan di luar pekerjaan survei. Sel menyusut saat mendekati kutub.
Mengapa pakai geohash
Prefix string mudah diindeks di PostgreSQL, Redis, DynamoDB, dan SQLite. Untuk menemukan titik dalam radius 5 km dari target, hitung geohash target pada presisi 5 lalu cari prefiks — jauh lebih murah daripada query jarak geodesik. Edge case batas sel itu nyata, jadi pipeline produksi juga mengkueri delapan sel tetangga. Geohash lebih sederhana dan lebih lama dari S2/H3 dan tetap menjadi skema teringan untuk beban kerja proximity di jalur cepat.
Pertanyaan yang Sering Diajukan
- Kenapa presisi 5 sudah menutupi sebuah kota?
- Setiap karakter memberi 5 bit, jadi presisi 5 = 25 bit ≈ sel 4,9 km × 4,9 km di sekitar khatulistiwa. Kota beberapa kilometer pas dalam satu sel, itu sebabnya banyak aplikasi ride-hailing dan pengantaran mengelompokkan pengemudi/order menggunakan geohash presisi 5 untuk pencocokan cepat.
- Dua titik dekat punya geohash berbeda — bug?
- Bukan bug, melainkan artefak grid. Titik di sisi berbeda batas sel tidak berbagi prefiks meski berjarak 1 m. Di produksi kita mengkueri hash target plus delapan sel tetangga (ring 3×3).
- Alfabet yang dipakai geohash?
- 0-9 plus b-z tanpa a, i, l, o. Pengecualian itu mencegah kebingungan dengan 0/1 di font kontras rendah. Ini base32 dengan alfabet kustom — berbeda dengan base32 RFC 4648.
- Perbandingan geohash dengan S2 dan H3?
- Geohash paling sederhana dan paling lama. S2 dan H3 menggunakan grid bola atau heksagon yang menangani distorsi kutub lebih baik. Untuk kebanyakan kebutuhan proximity di aplikasi, geohash cukup; untuk navigasi/routing skala planet, S2/H3 lebih layak.
- Boleh indeks geohash di PostgreSQL?
- Boleh. Perlakukan hash sebagai kolom text dengan indeks btree, pencarian prefiks (LIKE 'dr5ru%') jadi sangat cepat. Untuk kueri spasial bisa dikombinasikan dengan PostGIS; di banyak kasus prefiks sudah cukup.
- Apakah Toova menyimpan koordinat yang saya encode?
- Tidak. Encode dan decode berjalan di JavaScript halaman ini. Koordinat dan hash hasilnya tidak pernah mencapai server Toova.