ClickHouse/docs/ru/sql-reference/functions/geo/geohash.md
Roman Bug 9ec78855cd
DOCSUP-2806: Add meta header in RU (#15801)
* DOCSUP-2806: Add meta intro.

* DOCSUP-2806: Update meta intro.

* DOCSUP-2806: Fix meta.

* DOCSUP-2806: Add quotes for meta headers.

* DOCSUP-2806: Remove quotes from meta headers.

* DOCSUP-2806: Add meta headers.

* DOCSUP-2806: Fix quotes in meta headers.

* DOCSUP-2806: Update meta headers.

* DOCSUP-2806: Fix link to nowhere in EN.

* DOCSUP-2806: Fix link (settings to tune)

* DOCSUP-2806: Fix links.

* DOCSUP-2806:Fix links EN

* DOCSUP-2806: Fix build errors.

* DOCSUP-2806: Fix meta intro.

* DOCSUP-2806: Fix toc_priority in examples datasets TOC.

* DOCSUP-2806: Fix items order in toc.

* DOCSUP-2806: Fix order in toc.

* DOCSUP-2806: Fix toc order.

* DOCSUP-2806: Fix order in toc.

* DOCSUP-2806: Fix toc index in create

* DOCSUP-2806: Fix toc order in create.

Co-authored-by: romanzhukov <romanzhukov@yandex-team.ru>
Co-authored-by: alexey-milovidov <milovidov@yandex-team.ru>
2020-10-26 13:29:30 +03:00

6.1 KiB
Raw Blame History

toc_title
Функции для работы с системой Geohash

Функции для работы с системой Geohash

Geohash — это система геокодирования, которая делит поверхность Земли на участки в виде "решетки", и каждую ячейку решетки кодирует в виде строки из букв и цифр. Система поддерживает иерархию (вложенность) ячеек, поэтому чем точнее определена геопозиция, тем длиннее строка с кодом соответствующей ячейки.

Для ручного преобразования географических координат в строку geohash можно использовать сайт geohash.org.

geohashEncode

Кодирует широту и долготу в строку geohash.

geohashEncode(longitude, latitude, [precision])

Входные значения

  • longitude — долгота. Диапазон — [-180°, 180°].
  • latitude — широта. Диапазон — [-90°, 90°].
  • precision — длина результирующей строки, по умолчанию 12. Опционально. Целое число в диапазоне [1, 12]. Любое значение меньше, чем 1 или больше 12 автоматически преобразуются в 12.

Возвращаемые значения

  • Строка с координатой, закодированной модифицированной версией алфавита base32.

Пример

SELECT geohashEncode(-5.60302734375, 42.593994140625, 0) AS res
┌─res──────────┐
│ ezs42d000000 │
└──────────────┘

geohashDecode

Декодирует любую строку, закодированную в geohash, на долготу и широту.

geohashDecode(geohash_string)

Входные значения

  • geohash_string — строка, содержащая geohash.

Возвращаемые значения

  • (longitude, latitude) — широта и долгота. Кортеж из двух значений типа Float64.

Пример

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.

!!! info "Замечание" Все передаваемые координаты должны быть одного и того же типа: либо Float32, либо Float64.

Возвращаемые значения

  • Массив строк, описывающих участки, покрывающие заданный участок. Длина каждой строки соответствует точности geohash. Порядок строк — произвольный.

Тип данных: Array(String).

!!! info "Замечание" Если возвращаемый массив содержит свыше 10 000 000 элементов, функция сгенерирует исключение.

Пример

Запрос:

SELECT geohashesInBox(24.48, 40.56, 24.785, 40.81, 4) AS thasos

Результат:

┌─thasos──────────────────────────────────────┐
│ ['sx1q','sx1r','sx32','sx1w','sx1x','sx38'] │
└─────────────────────────────────────────────┘

Оригинальная статья