Plus de jeux sur WuGames.ioSponsoriséDécouvrez des jeux de navigateur gratuits — jouez aussitôt, sans téléchargement ni inscription.Jouer

Encodeur / décodeur Geohash - Grille spatiale

Outil Geohash gratuit : encodez/décodez des geohash, visualisez les cellules de grille et trouvez les voisins. Convertissez des coordonnées en geohash pour les recherches de proximité et l'indexation spatiale.

Qu'est-ce qu'un Geohash ?

Geohash est un système de géocodage qui transforme une latitude et une longitude en une chaîne alphanumérique courte. Créé par Gustavo Niemeyer en 2008, il découpe le globe en une grille hiérarchique où chaque caractère ajoute de la précision.

Un geohash tel que « w7p9v0rr » représente une zone rectangulaire précise sur Terre. Plus la chaîne est longue, plus la zone est petite, ce qui rend le geohash idéal pour les recherches de proximité et l'indexation spatiale.

Atouts du Geohash :

  • Structure hiérarchique : chaque caractère affine la zone précédente
  • Propriété de proximité : des geohash proches partagent souvent des préfixes identiques
  • Simplicité : comparaisons de chaînes pour des filtres approximatifs
  • Compatible base de données : indexable sous forme de chaîne pour des requêtes rapides
  • Sûr pour les URL : utilise un alphabet base-32 (0-9, a-z sans a, i, l, o)

Geohash est largement utilisé dans les services basés sur la localisation, les bases NoSQL (MongoDB, Redis) et les applications de cartographie.

Comment fonctionne Geohash

Geohash repose sur un encodage base-32 qui divise progressivement la Terre en cellules rectangulaires. Chaque caractère correspond à un niveau de subdivision :

Niveaux de précision et tailles de cellules :

  • 1 caractère : ~5 000 km × 5 000 km (niveau continental)
  • 3 caractères : ~156 km × 156 km (niveau régional/ville)
  • 5 caractères : ~5 km × 5 km (quartier)
  • 7 caractères : ~150 m × 150 m (rue)
  • 9 caractères : ~5 m × 5 m (bâtiment)
  • 12 caractères : ~4 cm × 2 cm (précision submétrique)

Processus d'encodage :

L'algorithme alterne longitude et latitude, divisant l'espace par moitié à chaque bit. Toutes les 5 bits produisent un caractère base-32 qui bâtit la chaîne de gauche à droite.

Recherche de voisins :

Geohash permet de retrouver facilement les cellules adjacentes, pratique pour les requêtes « trouver à proximité », tout en gérant les cas limites près des frontières.

Cas d'usage

Geohash s'impose dans de nombreux scénarios :

  • Recherche de proximité : filtrer les points partageant un préfixe commun
  • Indexation spatiale : organiser les données par geohash dans une base
  • Regroupement : trier les points par précision tronquée
  • Mise en cache : utiliser le geohash comme clé pour des données géographiques
  • Partage d'URL : communiquer des positions approximatives dans un lien court
  • Sharding : répartir les données géographiques par préfixe geohash

Geohash vs autres systèmes

Comparaison rapide :

  • Geohash vs lat/lon : plus compact et filtrable par préfixe, mais moins lisible
  • Geohash vs QuadKeys : principe proche mais encodage base-32 contre base-4
  • Geohash vs Plus Codes : Geohash offre une précision variable, Plus Codes un format fixe
  • Geohash vs H3 : H3 utilise des hexagones (meilleure forme), Geohash des rectangles (plus simple)

Choisissez Geohash pour indexer vos données et faire des recherches par préfixe. Optez pour Plus Codes ou H3 si vous avez besoin d'un format très lisible ou de cellules aux propriétés spatiales optimisées.

Gérer les voisins

Chaque geohash possède 8 voisins (N, NE, E, SE, S, SW, W, NW), utile pour étendre une zone de recherche :

  • Recherche simple : interroger le geohash cible et ses 8 voisins
  • Bords de cellule : contrôler les voisins lorsqu'un point est proche de la limite
  • Recherche par rayon : combiner plusieurs niveaux de précision et leurs voisins
  • Suivi temps réel : surveiller le passage d'objets d'une cellule à l'autre

Les voisins ne couvrent pas tous les cas extrêmes (surtout près de ±180° de longitude), il reste donc conseillé de calculer les distances réelles pour une proximité très précise.

About Encodeur / décodeur Geohash - Grille spatiale

Geohash Encoder Decoder transforme latitude/longitude en chaînes alphanumériques courtes ("w7p9v0rr") utilisées par Redis GEO, MongoDB, Cassandra et autres bases de données pour les requêtes de proximité rapides. Encodez un point avec une précision de 1 à 12 pour obtenir le geohash, son rectangle englobant, la taille de cellule et les 8 cellules voisines (la fameuse couverture en 9 cellules pour les requêtes de proximité), ou décodez un geohash existant en coordonnées. Conçu pour les ingénieurs backend construisant des fonctionnalités 'proximité', les ingénieurs de données indexant la télémétrie IoT, les plateformes de VTC et de livraison partitionnant les données de localisation par préfixe, et toute personne explorant l'indexation spatiale. Copiez les 9 cellules en CSV pour les utiliser directement dans des clauses SQL WHERE. Essayez aussi notre Distance azimut et Validateur GeoJSON.

Questions fréquemment posées

Geohash est un système hiérarchique d'indexation spatiale inventé par Gustavo Niemeyer en 2008, qui encode un couple latitude-longitude en une courte chaîne alphanumérique comme "u4pruydqqvj". Chaque caractère supplémentaire multiplie la précision par environ 32 — 5 caractères ≈ ±2,4 km, 7 ≈ ±76 m, 9 ≈ ±2,4 m, 11 ≈ ±7 cm. Les chaînes partageant un préfixe représentent des localisations proches, ce qui rend geohash extrêmement utile pour l'indexation spatiale en base de données (Redis GEOADD, MongoDB 2dsphere, Cassandra), les requêtes de proximité, la déduplication de points GPS voisins et le partage de localisations dans des URL conviviales. Inconvénient : les cellules ne sont pas carrées (2× plus hautes que larges à certains niveaux) et la proximité par préfixe casse aux bords — deux points à 1 mètre peuvent avoir des préfixes différents s'ils se trouvent de part et d'autre d'une frontière geohash.

Geohash divise récursivement la Terre en grilles de 32 cellules (en base 32 avec l'alphabet 0123456789bcdefghjkmnpqrstuvwxyz — notez l'absence de a, i, l, o pour éviter la confusion visuelle). Chaque caractère ajoute 5 bits, alternant entre raffinement de longitude et de latitude, donc les dimensions de cellule alternent entre ratios 2:1 et 1:1. Tailles approximatives à l'équateur : longueur 1 = 5 000 × 5 000 km, longueur 2 = 1 250 × 625 km, longueur 3 = 156 × 156 km, longueur 4 = 39 × 19,5 km, longueur 5 = 4,9 × 4,9 km, longueur 6 = 1,2 × 0,61 km, longueur 7 = 153 × 153 m, longueur 8 = 38,2 × 19,1 m, longueur 9 = 4,8 × 4,8 m, longueur 10 = 1,2 × 0,6 m, longueur 11 = 15 × 15 cm, longueur 12 = 3,7 × 1,8 cm. Les cellules rétrécissent selon le cosinus de la latitude sur la dimension de longitude.

C'est le fameux "effet de bord". Deux points à 1 mètre peuvent tomber dans des cellules différentes si une frontière geohash passe entre eux — et les cellules adjacentes ne partagent souvent qu'un seul caractère ou aucun. Le pire cas est à l'équateur et au méridien de Greenwich, où les quatre quadrants (nord/sud et est/ouest) commencent tous par des caractères différents (s, t, e, k ou similaires). Les systèmes en production contournent cela en interrogeant non seulement votre geohash mais aussi ses 8 voisins (N, S, E, O et les quatre diagonales), puis en filtrant par distance exacte. Des librairies comme `geohash-neighbours` ou `nodejs-geohash` vous donnent directement les 8 voisins. Le même correctif s'applique aux courbes de Z-order et de Hilbert — toute courbe de remplissage d'espace 1D a ce problème de discontinuité.

Quatre index spatiaux modernes résolvent des problèmes se recoupant différemment. Geohash (Niemeyer 2008) : chaîne base-32, cellules rectangulaires, proximité par préfixe, simple et omniprésent, problèmes de bord. Plus Codes/Open Location Code (Google 2015) : conçu pour usage humain, format type code régional "6PR599X8+8H", intégré dans Google Maps, ne nécessite pas de référence de pays. H3 (Uber 2018) : cellules hexagonales en 16 résolutions, distance de voisins uniforme (toujours 6 voisins), excellent pour matching VTC et analyse de flux, sortie entier 64-bit ou chaîne. S2 (Google, utilisé dans BigQuery et Bing) : cellules hiérarchiques de courbe de Hilbert sur sphère, 30 niveaux, cellules approximativement équi-aires, utilisé chez YouTube/Google. Geohash pour sharding clé-valeur simple, H3 pour analytique, S2 pour indexation globale, Plus Codes pour adressage — choisissez selon l'usage.

Un quadkey est le schéma d'indexation derrière Bing Maps de Microsoft et la plupart des serveurs de tiles Web Mercator. Chaque niveau subdivise le monde en 4 quadrants (Q1-Q4) numérotés 0-3, donc un quadkey est une chaîne de chiffres 0-3 comme "02313011120". Geohash utilise base-32 (5 bits par caractère) et alterne raffinement lat/lon ; quadkey utilise base-4 (2 bits par caractère) et applique les deux simultanément, donnant des cellules carrées en projection Web Mercator. Conversion : 1 caractère geohash = 2,5 caractères quadkey (5 bits ÷ 2 bits). Les quadkeys mappent directement vers les tiles de carte aux niveaux de zoom 1-23 (zoom = longueur du quadkey), c'est pourquoi toute URL de tile de carte web a cette structure. Geohash est purement un encodage de coordonnée sans relation avec un serveur de tiles. Tous deux partagent la propriété préfixe = cellule ancêtre.

Schéma standard : calculez le geohash du centre de recherche à une précision correspondant à votre rayon (ex : précision 6 ≈ cellules de 1,2 km, bon pour rayons de 1-2 km), trouvez les 8 cellules voisines, faites une requête SQL ou NoSQL pour les lignes dont le geohash stocké commence par un de ces 9 préfixes, puis post-filtrez par distance haversine exacte pour éliminer les faux positifs aux coins. Redis simplifie avec `GEOSEARCH ... BYRADIUS` (qui utilise geohash en interne). PostGIS offre `ST_DWithin` sur colonnes `geography`, plus précis mais plus lent. Pour 1 million de points et requêtes de 1 km, l'approche par préfixe geohash est généralement 10-100× plus rapide qu'une bounding box + index spatial sur des charges dominées par la lecture. N'oubliez juste pas l'expansion 8-voisins — sans elle vous ratez 30-50% des résultats proches près des bords.

L'alphabet est 0123456789bcdefghjkmnpqrstuvwxyz — 32 caractères choisis pour éviter des paires visuellement ambiguës en code écrit ou tapé. Lettres exclues : a (confondable avec o dans certaines polices), i (avec 1, l, |), l (L minuscule ressemble à 1 et I), o (ressemble à 0). Cela rend les geohashes sûrs pour dictée téléphonique et amicaux pour l'OCR. Pourquoi base-32 plutôt que base-16 ou base-64 ? Cinq bits par caractère est un sweet spot : chaque caractère raffine la précision par 32×, alternant 2-3 bits entre lat et lon, donnant des cellules approximativement carrées à la plupart des précisions et des chaînes lisibles de 6-12 caractères pour les usages typiques. Base-64 compresserait plus mais introduit sensibilité à la casse et complications d'URL-encoding. La variante Geohash-36 (alphabet différent) existe mais n'a jamais supplanté l'encodage Niemeyer original.

Trois vraies faiblesses. Première, forme de cellule non uniforme : les cellules de longitude rétrécissent près des pôles (une cellule de niveau 7 fait 153×153 m à l'équateur mais seulement 76×153 m à 60° de latitude), cassant l'hypothèse longueur de préfixe = distance sol constante. Deuxième, effet de bord : les cellules adjacentes peuvent ne partager aucun caractère, donc la proximité par préfixe nécessite l'expansion 8-voisins. Troisième, singularités antiméridien et pôle : l'encodage échoue ou produit des sauts étranges près de ±180° longitude et ±90° latitude. Évitez geohash pour la science polaire, la planification de vols transpolaires ou les applications nécessitant une distance de voisin constante — utilisez H3 (hexagones uniformes, 6 voisins équidistants à chaque résolution) ou S2 (carrés équi-aires sur sphère) à la place. Pour e-commerce mondial, VTC et analytique mobile, geohash reste excellent car la majeure partie de la population vit entre 60° S et 60° N où ses bizarreries sont mineures.
Encodeur / décodeur Geohash - Grille spatiale — Outil Geohash gratuit : encodez/décodez des geohash, visualisez les cellules de grille et trouvez les voisins. Converti
Encodeur / décodeur Geohash - Grille spatiale