Saltar al contenido principal

Geohash

Geohash es un sistema de geocodificación que subdivide la superficie terrestre en celdas con forma de cuadrícula y codifica cada celda en una cadena corta de letras y dígitos. Es una estructura de datos jerárquica, por lo que, cuanto más larga sea la cadena geohash, mayor será la precisión de la ubicación geográfica. Si necesitas convertir manualmente coordenadas geográficas en cadenas geohash, puedes usar geohash.org

geohashEncode

Codifica la latitud y la longitud como una cadena de geohash. Sintaxis
geohashEncode(longitude, latitude, [precision])
Valores de entrada
  • longitude — Parte de longitud de la coordenada que se desea codificar. Valor de coma flotante en el rango [-180°, 180°]. Float.
  • latitude — Parte de latitud de la coordenada que se desea codificar. Valor de coma flotante en el rango [-90°, 90°]. Float.
  • precision (opcional) — Longitud de la cadena codificada resultante. El valor predeterminado es 12. Entero en el rango [1, 12]. Int8.
  • Todos los parámetros de coordenadas deben ser del mismo tipo: Float32 o Float64.
  • Para el parámetro precision, cualquier valor inferior a 1 o superior a 12 se convierte silenciosamente en 12.
Valores devueltos
  • Cadena alfanumérica de la coordenada codificada (se utiliza una versión modificada del alfabeto de codificación base32). String.
Ejemplo
Query
SELECT geohashEncode(-5.60302734375, 42.593994140625, 0) AS res;
Response
┌─res──────────┐
│ ezs42d000000 │
└──────────────┘

geohashDecode

Decodifica cualquier cadena codificada en geohash a longitud y latitud. Sintaxis
geohashDecode(hash_str)
Valores de entrada
  • hash_str — Cadena codificada en geohash.
Valores devueltos
  • Tuple (longitude, latitude) con valores Float64 de longitud y latitud. Tuple(Float64)
Ejemplo
SELECT geohashDecode('ezs42') AS res;
┌─res─────────────────────────────┐
│ (-5.60302734375,42.60498046875) │
└─────────────────────────────────┘

geohashesInBox

Devuelve un array de cadenas codificadas con geohash, con la precisión indicada, que quedan dentro del recuadro dado e intersectan sus límites; básicamente, una cuadrícula 2D aplanada en un array. Sintaxis
geohashesInBox(longitude_min, latitude_min, longitude_max, latitude_max, precision)
Argumentos
  • longitude_min — Longitud mínima. Rango: [-180°, 180°]. Float.
  • latitude_min — Latitud mínima. Rango: [-90°, 90°]. Float.
  • longitude_max — Longitud máxima. Rango: [-180°, 180°]. Float.
  • latitude_max — Latitud máxima. Rango: [-90°, 90°]. Float.
  • precision — Precisión del geohash. Rango: [1, 12]. UInt8.

Todos los parámetros de coordenadas deben ser del mismo tipo: Float32 o Float64.
Valores devueltos
  • Array de cadenas de geohash de longitud igual a la precisión que cubren el área proporcionada; no debe asumirse ningún orden en los elementos. Array(String).
  • [] - Array vacío si los valores mínimos de latitud y longitud no son inferiores a los valores máximos correspondientes.

La función lanza una excepción si el array resultante supera los 10’000’000 elementos.
Ejemplo
Query
SELECT geohashesInBox(24.48, 40.56, 24.785, 40.81, 4) AS thasos;
Response
┌─thasos──────────────────────────────────────┐
│ ['sx1q','sx1r','sx32','sx1w','sx1x','sx38'] │
└─────────────────────────────────────────────┘
Última modificación el 10 de junio de 2026