Passer au contenu principal

Geohash

Geohash est un système de géocodage qui subdivise la surface de la Terre en cellules formant une grille et encode chaque cellule sous la forme d’une courte chaîne de lettres et de chiffres. Il s’agit d’une structure de données hiérarchique : plus la chaîne geohash est longue, plus la localisation géographique est précise. Si vous devez convertir manuellement des coordonnées géographiques en chaînes geohash, vous pouvez utiliser geohash.org

geohashEncode

Encode la latitude et la longitude sous forme de chaîne de geohash. Syntaxe
geohashEncode(longitude, latitude, [precision])
Valeurs d’entrée
  • longitude — Composante longitude de la coordonnée que vous souhaitez encoder. Nombre à virgule flottante dans l’intervalle [-180°, 180°]. Float.
  • latitude — Composante latitude de la coordonnée que vous souhaitez encoder. Nombre à virgule flottante dans l’intervalle [-90°, 90°]. Float.
  • precision (facultatif) — Longueur de la chaîne encodée résultante. La valeur par défaut est 12. Entier dans l’intervalle [1, 12]. Int8.
  • Tous les paramètres de coordonnées doivent être du même type : Float32 ou Float64.
  • Pour le paramètre precision, toute valeur inférieure à 1 ou supérieure à 12 est convertie silencieusement en 12.
Valeurs renvoyées
  • Chaîne alphanumérique correspondant à la coordonnée encodée (une version modifiée de l’alphabet d’encodage base32 est utilisée). String.
Exemple
Query
SELECT geohashEncode(-5.60302734375, 42.593994140625, 0) AS res;
Response
┌─res──────────┐
│ ezs42d000000 │
└──────────────┘

geohashDecode

Décode toute chaîne encodée en geohash en coordonnées de longitude et de latitude. Syntaxe
geohashDecode(hash_str)
Valeurs d’entrée
  • hash_str — Chaîne encodée au format geohash.
Valeurs renvoyées
  • Tuple (longitude, latitude) composé de valeurs Float64 correspondant à la longitude et à la latitude. Tuple(Float64)
Exemple
SELECT geohashDecode('ezs42') AS res;
┌─res─────────────────────────────┐
│ (-5.60302734375,42.60498046875) │
└─────────────────────────────────┘

geohashesInBox

Renvoie un tableau de chaînes encodées en geohash, à la précision donnée, qui se trouvent dans le cadre donné et en intersectent les limites, soit essentiellement une grille 2D aplatie sous forme de tableau. Syntaxe
geohashesInBox(longitude_min, latitude_min, longitude_max, latitude_max, precision)
Arguments
  • longitude_min — Longitude minimale. Plage : [-180°, 180°]. Float.
  • latitude_min — Latitude minimale. Plage : [-90°, 90°]. Float.
  • longitude_max — Longitude maximale. Plage : [-180°, 180°]. Float.
  • latitude_max — Latitude maximale. Plage : [-90°, 90°]. Float.
  • precision — Précision du geohash. Plage : [1, 12]. UInt8.
Tous les paramètres de coordonnées doivent être du même type : Float32 ou Float64.
Valeurs renvoyées
  • Tableau de chaînes de geohash de longueur precision représentant les boîtes couvrant la zone fournie ; ne vous fiez pas à l’ordre des éléments. Array(String).
  • [] - Tableau vide si les valeurs minimales de latitude et de longitude ne sont pas inférieures aux valeurs maximales correspondantes.
La fonction lève une exception si le tableau résultant contient plus de 10’000’000 éléments.
Exemple
Query
SELECT geohashesInBox(24.48, 40.56, 24.785, 40.81, 4) AS thasos;
Response
┌─thasos──────────────────────────────────────┐
│ ['sx1q','sx1r','sx32','sx1w','sx1x','sx38'] │
└─────────────────────────────────────────────┘
Dernière modification le 29 juin 2026