Географические функции

Функции географических координат

Функции географических координат в RQL предназначены для обработки и анализа геопространственных данных. Они позволяют выполнять расчеты расстояний между точками на земной поверхности, определять принадлежность точек к геометрическим фигурам, таким как эллипсы и многоугольники, и вычислять углы между точками.

Набор поддерживаемых функций RQL и их поведение зависят от версии установленного ClickHouse. Если функция не поддерживается в используемой версии ClickHouse, она также не будет доступна в RQL. Ознакомиться с актуальным списком функций и их поведением можно в официальном репозитории ClickHouse, выбрав нужную версию из веток. Например: список функций географических координат для ClickHouse 24.7.

Table 1. Функции географических координат
Функция Описание

greatCircleDistance

Расчет расстояния по большому кругу между двумя точками на поверхности земли.

geoDistance

Вычисляет расстояние между двумя точками на земной поверхности.

greatCircleAngle

Вычисляет угол между двумя точками на поверхности земли по большому кругу.

pointInEllipses

Определяет, находится ли точка внутри заданных эллипсов.

pointInPolygon

Проверяет, находится ли заданная точка внутри многоугольника.

Функции Geohash

Geohash — это система геокодирования, которая делит поверхность Земли на сектора в форме сетки и кодирует каждую ячейку короткой строкой из букв и цифр. Это иерархическая структура данных, поэтому чем длиннее строка geohash, тем точнее географическое местоположение.

Если вам необходимо вручную конвертировать географические координаты в строки geohash, вы можете использовать geohash.org.

Набор поддерживаемых функций RQL и их поведение зависят от версии установленного ClickHouse. Если функция не поддерживается в используемой версии ClickHouse, она также не будет доступна в RQL. Ознакомиться с актуальным списком функций и их поведением можно в официальном репозитории ClickHouse, выбрав нужную версию из веток. Например: список функций Geohash для ClickHouse 24.7.

Table 2. Функции Geohash
Функция Описание

geohashEncode

Кодирует географические координаты в строку Geohash.

geohashDecode

Декодирует строку Geohash обратно в географические координаты.

geohashesInBox

Генерирует Geohash-коды, покрывающие прямоугольник, заданный двумя угловыми точками.

Функции индексов H3

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

Уровень иерархии называется разрешением и может принимать значения от 0 до 15, где 0 — это базовый уровень с самыми крупными и грубыми ячейками.

Пара широты и долготы может быть преобразована в 64-битный индекс H3, идентифицирующий ячейку сетки.

Индекс H3 в основном используется для группировки местоположений и других геопространственных манипуляций.

Набор поддерживаемых функций RQL и их поведение зависят от версии установленного ClickHouse. Если функция не поддерживается в используемой версии ClickHouse, она также не будет доступна в RQL. Ознакомиться с актуальным списком функций и их поведением можно в официальном репозитории ClickHouse, выбрав нужную версию из веток. Например: список функций индексов H3 для ClickHouse 24.7.

Table 3. Функции индексов H3
Функция Описание

h3IsValid

Проверяет, является ли заданный индекс H3 действительным.

h3GetResolution

Возвращает разрешение (уровень детализации) индекса H3.

h3EdgeAngle

Вычисляет угол ребра индекса H3.

h3EdgeLengthM

Вычисляет длину ребра индекса H3 в метрах.

h3EdgeLengthKm

Вычисляет длину ребра индекса H3 в километрах.

geoToH3

Преобразует географические координаты в индекс H3.

h3ToGeo

Преобразует индекс H3 обратно в географические координаты.

h3ToGeoBoundary

Возвращает границы гексагона, представленного индексом H3.

h3kRing

Возвращает набор индексов H3, составляющих кольцо вокруг заданной точки.

h3GetBaseCell

Возвращает базовую ячейку для данного индекса H3.

h3HexAreaM2

Возвращает площадь гексагона, представленного индексом H3, в квадратных метрах.

h3HexAreaKm2

Возвращает площадь гексагона, представленного индексом H3, в квадратных километрах.

h3IndexesAreNeighbors

Проверяет, являются ли два индекса H3 соседями.

h3ToChildren

Возвращает дочерние индексы для заданного индекса H3 и указанного разрешения.

h3ToParent

Возвращает родительский индекс для заданного индекса H3 и указанного разрешения.

h3ToString

Преобразует индекс H3 в строковое представление.

stringToH3

Преобразует строковое представление индекса H3 обратно в индекс.

h3IsResClassIII

Определяет, принадлежит ли индекс H3 к третьему классу разрешения.

h3IsPentagon

Проверяет, является ли индекс H3 пентагоном.

h3GetFaces

Возвращает список граней, которые пересекает гексагон, представленный индексом H3.

h3CellAreaM2

Возвращает площадь ячейки H3 в квадратных метрах.

h3CellAreaRads2

Возвращает площадь ячейки H3 в радианах^2.

h3ToCenterChild

Возвращает центральный дочерний индекс для заданного индекса H3.

h3ExactEdgeLengthM

Возвращает точную длину ребра индекса H3 в метрах.

h3ExactEdgeLengthKm

Возвращает точную длину ребра индекса H3 в километрах.

h3ExactEdgeLengthRads

Возвращает точную длину ребра индекса H3 в радианах.

h3NumHexagons

Возвращает количество гексагонов в указанном разрешении.

h3Line

Возвращает линию (последовательность индексов H3) между двумя индексами H3.

h3Distance

Возвращает расстояние в гексагонах между двумя индексами H3.

h3HexRing

Возвращает кольцо гексагонов на заданном расстоянии от центрального индекса H3.

h3GetUnidirectionalEdge

Возвращает однонаправленное ребро между двумя индексами H3.

h3UnidirectionalEdgeIsValid

Проверяет, является ли однонаправленное ребро действительным.

h3GetOriginIndexFromUnidirectionalEdge

Возвращает исходный индекс для однонаправленного ребра.

h3GetDestinationIndexFromUnidirectionalEdge

Возвращает конечный индекс для однонаправленного ребра.

h3GetIndexesFromUnidirectionalEdge

Возвращает оба индекса для однонаправленного ребра.

h3GetUnidirectionalEdgesFromHexagon

Возвращает все однонаправленные ребра для заданного гексагона.

h3GetUnidirectionalEdgeBoundary

Возвращает границы однонаправленного ребра.

Функции индексов S2

S2 — это система географической индексации, в которой все географические данные представлены на трехмерной сфере (аналогично глобусу).

В библиотеке S2 точки представлены как S2 Index — определенное число, которое внутренне кодирует точку на поверхности единичной сферы, в отличие от традиционных пар (широта, долгота). Для получения индекса точки S2 для данной точки, указанной в формате (широта, долгота), используйте функцию geoToS2. Также вы можете использовать функцию s2ToGeo для получения географических координат, соответствующих указанному индексу точки S2.

Набор поддерживаемых функций RQL и их поведение зависят от версии установленного ClickHouse. Если функция не поддерживается в используемой версии ClickHouse, она также не будет доступна в RQL. Ознакомиться с актуальным списком функций и их поведением можно в официальном репозитории ClickHouse, выбрав нужную версию из веток. Например: список функций индексов S2 для ClickHouse 24.7.

Table 4. Функции индексов S2
Функция Описание

geoToS2

Преобразует географические координаты в индекс S2.

s2ToGeo

Преобразует индекс S2 обратно в географические координаты.

s2GetNeighbors

Возвращает индексы S2 соседних ячеек.

s2CellsIntersect

Проверяет пересечение двух ячеек S2.

s2CapContains

Проверяет, содержит ли сферический "cap" заданную точку или ячейку.

s2CapUnion

Объединяет два сферических "cap".

s2RectAdd

Добавляет точку к прямоугольнику S2, потенциально расширяя его.

s2RectContains

Проверяет, содержит ли прямоугольник S2 заданную точку.

s2RectUnion

Объединяет два прямоугольника S2.

s2RectIntersection

Находит пересечение двух прямоугольников S2.