Geohash
Geohash — это система геокодирования, которая разбивает поверхность Земли на ячейки сетки и кодирует каждую ячейку короткой строкой из букв и цифр. Это иерархическая структура данных, поэтому чем длиннее строка Geohash, тем точнее определяется географическое местоположение.
Если вам нужно вручную преобразовать географические координаты в строки Geohash, вы можете воспользоваться geohash.org
geohashEncode
Кодирует широту и долготу в строку geohash.
Синтаксис
geohashEncode(longitude, latitude, [precision])Входные значения
longitude— Долгота координаты, которую нужно закодировать. Число с плавающей запятой в диапазоне[-180°, 180°]. Float.latitude— Широта координаты, которую нужно закодировать. Число с плавающей запятой в диапазоне[-90°, 90°]. Float.precision(необязательно) — Длина итоговой закодированной строки. По умолчанию —12. Целое число в диапазоне[1, 12]. Int8.
Возвращаемые значения
- Буквенно-цифровая строка с закодированной координатой (используется модифицированная версия алфавита кодирования base32). String.
Пример
SELECT geohashEncode(-5.60302734375, 42.593994140625, 0) AS res;┌─res──────────┐
│ ezs42d000000 │
└──────────────┘geohashDecode
Декодирует любую строку в формате geohash в долготу и широту.
Синтаксис
geohashDecode(hash_str)Входные значения
hash_str— строка, закодированная в формате Geohash.
Возвращаемые значения
Пример
SELECT geohashDecode('ezs42') AS res;┌─res─────────────────────────────┐
│ (-5.60302734375,42.60498046875) │
└─────────────────────────────────┘geohashesInBox
Возвращает массив строк в кодировке Geohash заданной точности, которые покрывают указанный прямоугольник, находясь внутри него или пересекая его границы; по сути, это двумерная сетка, развернутая в массив.
Синтаксис
geohashesInBox(longitude_min, latitude_min, longitude_max, latitude_max, precision)Аргументы
longitude_min— Минимальная долгота. Диапазон:[-180°, 180°]. Float.latitude_min— Минимальная широта. Диапазон:[-90°, 90°]. Float.longitude_max— Максимальная долгота. Диапазон:[-180°, 180°]. Float.latitude_max— Максимальная широта. Диапазон:[-90°, 90°]. Float.precision— Точность Geohash. Диапазон:[1, 12]. UInt8.
Возвращаемые значения
- Массив строк Geohash длины
precision, покрывающих указанную область; порядок элементов не гарантируется. Array(String). []— Пустой массив, если минимальные значения широты и долготы не меньше соответствующих максимальных значений.
Пример
SELECT geohashesInBox(24.48, 40.56, 24.785, 40.81, 4) AS thasos;┌─thasos──────────────────────────────────────┐
│ ['sx1q','sx1r','sx32','sx1w','sx1x','sx38'] │
└─────────────────────────────────────────────┘