Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Fonctions pour utiliser Geohash

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.

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

Querysql
SELECT geohashEncode(-5.60302734375, 42.593994140625, 0) AS res;
Responsetext
┌─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.

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.

Exemple

Querysql
SELECT geohashesInBox(24.48, 40.56, 24.785, 40.81, 4) AS thasos;
Responsetext
┌─thasos──────────────────────────────────────┐
│ ['sx1q','sx1r','sx32','sx1w','sx1x','sx38'] │
└─────────────────────────────────────────────┘
Navigation