Функции для работы с Geohash
Geohash
Geohash — это система геокодов, которая делит поверхность Земли на ячейки в форме сетки и кодирует каждую ячейку в короткую строку из букв и цифр. Это иерархическая структура данных, поэтому чем длиннее строка geohash, тем точнее географическое положение.
Если вам нужно вручную конвертировать географические координаты в строки 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, заданной точности, которые попадают внутрь и пересекают границы заданного прямоугольника, по сути, двумерная сетка, уплощенная в массив.
Синтаксис
Аргументы
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-рамок заданной длины, охватывающих предоставленную область, не следует полагаться на порядок элементов. Array(String).
[]- Пустой массив, если минимальные значения широты и долготы не меньше соответствующих максимальных значений.
Функция вызывает исключение, если полученный массив превышает 10'000'000 элементов.
Пример
Запрос:
Результат: