Geohash
Geohash é um sistema de geocodificação que subdivide a superfície da Terra em áreas em forma de grade e codifica cada célula como uma sequência curta de letras e dígitos. É uma estrutura de dados hierárquica, portanto, quanto mais longa for a string de geohash, mais precisa será a localização geográfica.
Se você precisar converter manualmente coordenadas geográficas em strings de geohash, pode usar geohash.org
geohashEncode
Codifica latitude e longitude como uma string geohash.
Sintaxe
geohashEncode(longitude, latitude, [precision])Valores de entrada
longitude— Componente de longitude da coordenada que você deseja codificar. Número de ponto flutuante no intervalo[-180°, 180°]. Float.latitude— Componente de latitude da coordenada que você deseja codificar. Número de ponto flutuante no intervalo[-90°, 90°]. Float.precision(opcional) — Comprimento da string codificada resultante. O padrão é12. Inteiro no intervalo[1, 12]. Int8.
Valores retornados
- String alfanumérica da coordenada codificada (é usada uma versão modificada do alfabeto de codificação base32). String.
Exemplo
SELECT geohashEncode(-5.60302734375, 42.593994140625, 0) AS res;┌─res──────────┐
│ ezs42d000000 │
└──────────────┘geohashDecode
Decodifica qualquer string codificada em geohash para longitude e latitude.
Sintaxe
geohashDecode(hash_str)Valores de entrada
hash_str— sequência de caracteres codificada em Geohash.
Valores retornados
Exemplo
SELECT geohashDecode('ezs42') AS res;┌─res─────────────────────────────┐
│ (-5.60302734375,42.60498046875) │
└─────────────────────────────────┘geohashesInBox
Retorna um array de strings codificadas em geohash, com a precisão especificada, que ficam dentro da caixa fornecida e cruzam seus limites, basicamente uma grade 2D linearizada em um array.
Sintaxe
geohashesInBox(longitude_min, latitude_min, longitude_max, latitude_max, precision)Argumentos
longitude_min— Longitude mínima. Intervalo:[-180°, 180°]. Float.latitude_min— Latitude mínima. Intervalo:[-90°, 90°]. Float.longitude_max— Longitude máxima. Intervalo:[-180°, 180°]. Float.latitude_max— Latitude máxima. Intervalo:[-90°, 90°]. Float.precision— Precisão do geohash. Intervalo:[1, 12]. UInt8.
Valores retornados
- Array de strings com comprimento igual à precisão das caixas de geohash que cobrem a área fornecida; não se deve contar com a ordem dos itens. Array(String).
[]- Array vazio se os valores mínimos de latitude e longitude não forem menores que os valores máximos correspondentes.
Exemplo
SELECT geohashesInBox(24.48, 40.56, 24.785, 40.81, 4) AS thasos;┌─thasos──────────────────────────────────────┐
│ ['sx1q','sx1r','sx32','sx1w','sx1x','sx38'] │
└─────────────────────────────────────────────┘