Aussi disponible en : English · Español · Português · العربية
Convertisseur de geohash
Encodez et décodez des geohash, voyez la cellule que chacun désigne, et obtenez les huit cellules voisines nécessaires à une recherche de proximité.
Qu'est-ce qu'un geohash ?
Un geohash écrit une latitude et une longitude sous la forme d'une seule chaîne courte, du genre u09tunquc. Le procédé coupe le monde en deux, encore et encore : le point est-il dans la moitié est ou ouest, nord ou sud, en alternant les deux axes. Chaque réponse est un bit, les bits sont groupés par cinq, et chaque groupe devient un caractère d'un alphabet de trente-deux.
Comme le découpage est progressif, un hash plus court désigne une boîte plus grande. Quatre caractères couvrent une vingtaine de kilomètres, neuf quelques mètres. Et surtout : tronquer un hash donne exactement le hash du même lieu à cette précision moindre. u09tunquc se trouve toujours dans u09tun, lui-même toujours dans u09.
C'est cette dernière propriété qui explique l'emploi du geohash. Elle permet à un simple index textuel de répondre à une question spatiale : pour trouver ce qui est près d'un point, cherchez les lignes dont le geohash commence par le même préfixe. Pas de base spatiale, pas d'index particulier, une colonne de texte et un LIKE. L'alphabet écarte a, i, l et o pour la même raison qu'un code postal : ce sont les caractères que l'on lit de travers.
Comment l'utiliser
- Saisissez des coordonnées, ou collez un hash. Les deux sens fonctionnent. Parmi les lieux figure le pôle Nord, là où les calculs de voisines cassent d'ordinaire.
- Choisissez une longueur. Le panneau affiche la cellule désignée, ses limites et sa taille réelle en mètres à cette latitude — les cellules se resserrent vers les pôles tandis que leur hauteur ne bouge pas.
- Emportez les voisines. La grille montre les huit cellules qui touchent la vôtre. Une recherche de proximité en réclame neuf, et la section suivante est la mesure qui l'explique.
L'astuce du préfixe ne vaut que dans un sens
Deux geohash partageant un préfixe sont réellement proches : cette direction est garantie par la construction, et c'est ce qui fait marcher la technique. L'inverse est faux, et c'est là que les recherches de proximité par geohash échouent en silence. Deux points peuvent être à un mètre l'un de l'autre sans partager le moindre préfixe, si la frontière d'une cellule passe entre eux.
On en donne d'habitude la version spectaculaire : à un mètre, rien en commun. C'est vrai, et c'est rare — mesuré sur des paires aléatoires, deux points distants de 100 mètres ne partagent rien environ 0,01 % du temps, un sur dix mille. Citer ce chiffre fait passer le problème pour un cas limite négligeable.
Le coût réel est bien plus grand et parfaitement systématique. Nous avons mesuré ce qu'une recherche sur une seule cellule trouve vraiment : parmi les points réellement situés à moins de 300 mètres, une requête par préfixe de six caractères en renvoie 68,9 %. À sept caractères et 60 mètres, 65,8 %. À cinq caractères et 1500 mètres, 72,6 %. Dans tous les cas, environ un tiers des voisines manquent, parce qu'elles sont de l'autre côté d'une frontière — non pas une sur dix mille, mais une sur trois.
Le remède est la grille de cette page. Cherchez la cellule et ses huit voisines et la même mesure remonte au-delà de 99 %. C'est pourquoi tout usage sérieux du geohash pour la proximité calcule les voisines, et pourquoi un outil qui se contente d'encoder ne vous donne que la moitié du nécessaire.
Limites assumées, et vérifications
Les cellules ne sont ni carrées ni toutes de même taille. Une cellule de geohash est un rectangle en degrés : sa largeur en mètres se resserre à mesure qu'on s'éloigne de l'équateur, tandis que sa hauteur ne change pas. L'outil donne les deux à la latitude que vous regardez plutôt qu'un chiffre global, et aux hautes latitudes l'écart est spectaculaire.
Les voisines sont calculées géométriquement : décoder la cellule vers ses limites, sortir d'une cellule entière, réencoder. C'est démontrable à partir de l'encodeur plutôt que recopié des traditionnelles tables de bordure en base 32, et cela rend les extrémités testables. Au nord de la rangée supérieure et au sud de l'inférieure, il n'existe réellement pas de voisine, et l'outil ne renvoie rien plutôt que de basculer à l'autre bout de la planète. L'est et l'ouest, eux, bouclent, puisque la longitude boucle.
Les contrôles de correction sont structurels et non une table de réponses attendues, le geohash n'ayant pas de document normatif unique. Cinq mille points aléatoires font l'aller-retour encodage-décodage et retombent dans la cellule que désigne leur propre hash ; tronquer un hash équivaut à encoder à cette précision, sur deux mille points et à toutes les longueurs ; et la relation de voisinage est symétrique, si bien que la cellule à l'est de la mienne m'a pour voisine ouest. Les chiffres ci-dessus sont recalculés par la suite de tests plutôt qu'admis comme constantes.
Ce qu'il ne fait pas : il ne donnera pas la distance entre deux hash, car un préfixe commun ne la borne que grossièrement, et il ne dessine aucune carte — ce qui supposerait d'aller chercher des tuiles chez un tiers en lui indiquant où vous regardez.
Pourquoi est-ce gratuit ?
Ce sont des décalages de bits sur deux nombres, exécutés dans votre navigateur. Pas de serveur, pas de tuile, pas de compte.
Rien de ce que vous saisissez n'est envoyé, conservé ni journalisé — cela mérite d'être dit, puisque l'entrée est une position.