Encoder e Decoder Geohash
Privacy by design — tutto gira nel tuo browser
In modalità encode inserisci latitudine e longitudine (con uno slider di precisione) per ottenere un geohash. In modalità decode incolla un hash per vedere le coordinate del centro e i confini sud-ovest/nord-est della cella. Utile per index spaziali, ricerche di prossimità e archiviazione pseudonimizzata di posizioni.
Cosa codifica davvero un geohash
Un geohash intreccia i bit di longitudine e latitudine e codifica il risultato in base32 con un alfabeto personalizzato (0-9 e b-z senza a/i/l/o). Ogni carattere porta 5 bit di precisione, alternando il raffinamento di longitudine e latitudine. Il risultato è una stringa breve, URL-safe, la cui relazione di prefisso mappa direttamente il contenimento spaziale: ogni geohash che inizia con "dr5ru" si trova nella cella dr5ru.
Precisione e dimensione della cella
Alla precisione 1 il mondo è diviso in 32 celle larghe circa 5000 km. La precisione 5 (~ 4,9 km all’equatore) è ideale per il raggruppamento a livello di quartiere. La precisione 9 (~ 5 m) è la granularità giusta per un singolo edificio. La precisione 12 arriva a ~ 4 cm ma raramente serve fuori da lavori di rilievo. Le celle si restringono verso i poli.
Perché usare i geohash
I prefissi delle stringhe si indicizzano benissimo in PostgreSQL, Redis, DynamoDB e SQLite. Per trovare punti a 5 km da un target calcola il suo geohash a precisione 5 e cerca corrispondenze per prefisso — molto più economico delle query di distanza ortodromica. L’effetto bordo cella esiste, quindi in produzione si interrogano anche le otto celle vicine. Geohash è più semplice e antico di S2/H3 e resta lo schema più leggero per workload di prossimità hot-path.
Domande frequenti
- Perché la precisione 5 copre un’intera città?
- Ogni carattere porta 5 bit, quindi precisione 5 = 25 bit ≈ celle di 4,9 km × 4,9 km vicino all’equatore. Città di pochi chilometri stanno in una cella; per questo molte app di mobilità e delivery raggruppano autisti e ordini per geohash di precisione 5 per fare matching veloce.
- Due punti vicini con geohash diversi — bug?
- Non è un bug, è un artefatto della griglia. Punti su lati opposti di un bordo cella non condividono prefisso anche a 1 m di distanza. In produzione si interroga il target più le otto celle vicine (anello 3×3).
- Qual è l’alfabeto del geohash?
- 0-9 più b-z senza a, i, l, o. L’esclusione evita confusioni con 0/1 in font poco contrastati. È base32 con questo alfabeto personalizzato, diverso dal base32 RFC 4648.
- Come si confronta con S2 e H3?
- Geohash è il più semplice e antico dei tre. S2 e H3 usano griglie sferiche o esagonali che gestiscono meglio la distorsione polare. Per la maggior parte dei casi di prossimità a livello app il geohash basta; per navigazione su scala planetaria S2/H3 valgono lo sforzo.
- Si possono indicizzare i geohash in PostgreSQL?
- Sì. Tratta l’hash come colonna text con indice btree: le ricerche per prefisso (LIKE 'dr5ru%') diventano velocissime. Per query spaziali completa con PostGIS; nella maggior parte dei casi basta il prefisso.
- Toova registra le coordinate che codifico?
- No. Encode e decode girano in JavaScript in questa pagina. Coordinate e hash risultante non raggiungono mai un server Toova.