İçeriğe geç
Toova
Tüm Araçlar

Geohash Encoder ve Decoder

Tasarımdan gizli — tamamen tarayıcınızda çalışır

Encode modunda enlem ve boylamı (hassasiyet kaydırıcısıyla) yazın ve geohash dizesini alın. Decode modunda bir hash yapıştırın; hücrenin merkez koordinatlarını ve güneybatı/kuzeydoğu sınırlarını görün. Mekânsal indeksler, yakınlık aramaları ve takma adlı konum saklama için kullanışlı.

Geohash gerçekte neyi kodlar

Geohash, boylam ve enlemin bitlerini örerek 0-9 ile a/i/l/o hariç b-z karakterlerinden oluşan özel bir alfabe ile base32 kodlar. Her karakter 5 bitlik hassasiyet ekler ve boylam/enlem inceltmesi sırayla yapılır. Sonuç kısa, URL-güvenli bir dizedir ve önek ilişkisi doğrudan mekânsal kapsamayla eşleşir: "dr5ru" ile başlayan her geohash, dr5ru adlı hücrenin içindedir.

Hassasiyet ve hücre boyutu

Hassasiyet 1’de dünya 32 hücreye bölünür ve her hücre yaklaşık 5.000 km genişliğindedir. Hassasiyet 5 (ekvator yakınında ~4,9 km) mahalle bazında gruplama için uygundur. Hassasiyet 9 (~5 m) bir bina için doğru ölçektir. Hassasiyet 12 ~4 cm’ye iner ve genelde haritalama dışında nadiren gerekir. Kutuplara yaklaşıldıkça hücreler küçülür.

Geohash neden kullanılır

Dizgi önekleri PostgreSQL, Redis, DynamoDB ve SQLite’ta verimli indekslenir. Hedefin 5 km içindeki noktaları bulmak için hedefin hassasiyet 5 geohash’ini hesaplayıp önek araması yapın — büyük daire mesafe sorgularından çok daha ucuzdur. Hücre kenarı kenar durumu gerçektir, üretim hatları hedef hash artı sekiz komşusunu sorgular. Geohash S2 ve H3’ten daha basit ve daha eskidir; sıcak yoldaki yakınlık iş yükleri için hâlâ en hafif şemadır.

Sıkça Sorulan Sorular

Neden 5 hassasiyet bir şehri kapsıyor?
Her karakter 5 bit taşıdığı için hassasiyet 5 = 25 bit ≈ ekvator yakınında 4,9 km × 4,9 km hücreler. Birkaç km genişlikteki şehirler bir hücreye sığar; bu yüzden birçok yolculuk paylaşımı ve teslimat uygulaması sürücüleri ve siparişleri hızlı eşleşme için hassasiyet 5 geohash’iyle gruplar.
Yakın iki nokta farklı geohash veriyor — hata mı?
Hata değil, ızgaranın doğası. Hücre sınırının iki yanındaki noktalar 1 m bile uzakta olsa ortak önek paylaşmaz. Üretimde hedef hash ile sekiz komşu hücre (3×3 halka) birlikte sorgulanır.
Geohash hangi alfabeyi kullanır?
0-9 ve a, i, l, o hariç b-z; toplam 32 karakter. Bu harfler 0/1 ile karışmasın diye dışarıda bırakılır. Bu özel alfabe ile uygulanan base32, RFC 4648 base32’sinden farklıdır.
Geohash, S2 veya H3 ile nasıl karşılaştırılır?
Geohash üçü içinde en basit ve en eskisidir. S2 (küre üzerine küp projeksiyonu) ve H3 (altıgen ızgara) kutuplardaki bozulmayı daha iyi yönetir ama daha fazla kod ister. Çoğu uygulama düzeyi yakınlık için geohash yeter; gezegen ölçekli rota/navigasyon için S2/H3 daha avantajlıdır.
Geohash’i PostgreSQL’de güvenle indeksleyebilir miyim?
Evet. Hash’i text sütunu yapıp btree indeks ekleyin; önek aramaları (LIKE 'dr5ru%') çok hızlanır. Mekânsal sorgular için PostGIS ekleyebilirsiniz; çoğu senaryoda önek yeterli olur.
Toova kodladığım koordinatları kaydeder mi?
Hayır. Encode ve decode bu sayfanın JavaScript’i ile çalışır; koordinatlar ve sonuçtaki hash hiçbir Toova sunucusuna ulaşmaz.