Функции для работы с Geohash
Geohash
Geohash — это система геокодирования, которая разбивает поверхность Земли на ячейки сетки и кодирует каждую ячейку в короткую строку из букв и цифр. Это иерархическая структура данных, поэтому чем длиннее строка geohhash, тем точнее будет указано географическое местоположение.
Если вам нужно вручную преобразовать географические координаты в строки geohash, вы можете использовать geohash.org.
geohashEncode
Кодирует широту и долготу в строку формата geohash.
Синтаксис
Входные значения
longitude— Долготная часть координаты, которую нужно закодировать. Вещественное число в диапазоне[-180°, 180°]. Float.latitude— Широтная часть координаты, которую нужно закодировать. Вещественное число в диапазоне[-90°, 90°]. Float.precision(необязательно) — Длина результирующей закодированной строки. Значение по умолчанию —12. Целое число в диапазоне[1, 12]. Int8.
- Все параметры координат должны быть одного типа: либо
Float32, либоFloat64. - Для параметра
precisionлюбое значение меньше1или больше12автоматически преобразуется в12.
Возвращаемые значения
- Буквенно-цифровая строка закодированной координаты (используется модифицированный вариант алфавита кодирования base32). String.
Пример
Запрос:
Результат:
geohashDecode
Декодирует любую строку, закодированную с помощью geohash, в значения долготы и широты.
Синтаксис
Входные значения
hash_str— строка в кодировке Geohash.
Возвращаемые значения
Пример
geohashesInBox
Возвращает массив строк, закодированных в geohash с заданной точностью, которые находятся внутри заданного прямоугольника или пересекают его границы, по сути представляя собой 2D‑сетку, развёрнутую в одномерный массив.
Синтаксис
Аргументы
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.
Все параметры координат должны быть одного типа: либо Float32, либо Float64.
Возвращаемые значения
- Массив строк geohash длины
precision, соответствующих geohash-боксам, покрывающим заданную область; порядок элементов не гарантируется. Array(String). []— пустой массив, если минимальные значения широты и долготы не меньше соответствующих максимальных значений.
Функция генерирует исключение, если результирующий массив содержит более 10'000'000 элементов.
Пример
Запрос:
Результат: