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

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

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

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

Ознакомиться с актуальным списком функций и их поведением можно в официальной документации ClickHouse.

Обратите внимание, что для функций в официальной документации ClickHouse может быть указана версия, в которой эти функции были введены. Это позволит определить, доступна ли рассматриваемая функция в вашей версии ClickHouse.

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

geoDistance(lon1Deg, lat1Deg, lon2Deg, lat2Deg)

Аналогично greatCircleDistance(), но вычисляет расстояние на эллипсоиде WGS-84, а не на сфере. Это более точное приближение формы Земли. Возвращает расстояние между двумя точками на поверхности Земли в метрах. Вызывает исключение, если значения входных параметров выходят за пределы диапазона.

  • lon1Deg — долгота первой точки в диапазоне [-180°, 180°].

  • lat1Deg — широта первой точки в диапазоне [-90°, 90°].

  • lon2Deg — долгота второй точки в диапазоне [-180°, 180°].

  • lat2Deg — широта второй точки в диапазоне [-90°, 90°].

Положительные значения соответствуют северной широте и восточной долготе, отрицательные — южной широте и западной долготе.

greatCircleAngle(lon1Deg, lat1Deg, lon2Deg, lat2Deg)

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

  • lon1Deg — долгота первой точки в диапазоне [-180°, 180°].

  • lat1Deg — широта первой точки в диапазоне [-90°, 90°].

  • lon2Deg — долгота второй точки в диапазоне [-180°, 180°].

  • lat2Deg — широта второй точки в диапазоне [-90°, 90°].

Положительные значения соответствуют северной широте и восточной долготе, отрицательные — южной широте и западной долготе.

greatCircleDistance(lon1Deg, lat1Deg, lon2Deg, lat2Deg)

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

  • lon1Deg — долгота первой точки в диапазоне [-180°, 180°].

  • lat1Deg — широта первой точки в диапазоне [-90°, 90°].

  • lon2Deg — долгота второй точки в диапазоне [-180°, 180°].

  • lat2Deg — широта второй точки в диапазоне [-90°, 90°].

Положительные значения соответствуют северной широте и восточной долготе, отрицательные — южной широте и западной долготе.

pointInEllipses(x, y, x0, y0, a0, b0, …​, xn, yn, an, bn)

Проверяет, принадлежит ли точка хотя бы одному из эллипсов. Координаты задаются в декартовой системе координат. Возвращает 1, если точка находится внутри хотя бы одного из эллипсов, иначе — 0.

  • x, y — координаты точки на плоскости.

  • xi, yi — координаты центра i-го эллипса.

  • ai, bi — оси i-го эллипса в единицах координат x, y.

Количество входных параметров должно быть равно 2+4⋅n, где n — количество эллипсов.

pointInPolygon((x, y), [(a, b), (c, d) …​], …​)

Проверяет, принадлежит ли точка (x, y) полигону [(a, b), (c, d) …​] на плоскости. Возвращает 1, если точка находится внутри полигона, иначе — 0. Если точка находится на границе полигона, функция может вернуть либо 0, либо 1.

  • (x, y) — координаты точки на плоскости. Значение типа Tuple или Point.

  • [(a, b), (c, d) …​] — вершины полигона. Значение типа Array или Ring. Каждая вершина задается парой координат (a, b). Вершины следует указывать последовательно, по часовой стрелке или против часовой стрелки. Минимальное число вершин — 3.

Функция поддерживает полигоны с отверстиями (Polygon) и мультиполигоны (MultiPolygon). Аргумент полигона также может быть столбцом типа Geometry, содержащим значения полигональных типов (Ring, Polygon или MultiPolygon).

Геометрию полигона можно передать двумя способами:

  • Единым аргументом соответствующего типа (Polygon, MultiPolygon или столбец Geometry).

  • Несколькими аргументами:

    • Для Polygon: сначала внешний контур (Ring), затем каждое отверстие передается как отдельный аргумент.

    • Для MultiPolygon: каждый входящий полигон передается как отдельный аргумент.

Полигональные типы (Ring, Polygon, MultiPolygon и Geometry) можно передавать либо как константы, либо как неконстантные столбцы таблицы. Когда полигон передается через несколько отдельных аргументов (внешний Ring, за которым следуют отверстия, или несколько полигонов в составе мультиполигона), все эти аргументы должны быть константами.

Функции Geohash

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

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

Ознакомиться с актуальным списком функций и их поведением можно в официальной документации ClickHouse.

Обратите внимание, что для функций в официальной документации ClickHouse может быть указана версия, в которой эти функции были введены. Это позволит определить, доступна ли рассматриваемая функция в вашей версии ClickHouse.

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

geohashDecode(hash_str)

Декодирует строку Geohash hash_str в географические координаты. Возвращает Tuple(longitude, latitude) со значениями типа Float64, представляющими долготу и широту.

geohashEncode(longitude, latitude, [precision])

Кодирует географические координаты в строку Geohash типа String при помощи модифицированной версии алфавита кодирования Base32. Параметры longitude и latitude должны быть одного типа: либо Float32, либо Float64.

  • longitude — долгота координаты, которую нужно закодировать. Число с плавающей запятой в диапазоне [-180°, 180°] типа Float32 или Float64.

  • latitude — широта координаты, которую нужно закодировать. Число с плавающей запятой в диапазоне [-90°, 90°] типа Float32 или Float64.

  • precision — необязательный параметр. Длина итоговой закодированной строки. По умолчанию — 12. Целое число в диапазоне [1, 12] типа Int8. Любое значение меньше 1 или больше 12 без предупреждения преобразуется в 12.

geohashesInBox(longitude_min, latitude_min, longitude_max, latitude_max, precision)

Возвращает массив строк типа Array(String) в кодировке Geohash длины precision. Строки покрывают указанный прямоугольник, находясь внутри него или пересекая его границы; по сути, это двумерная сетка, развернутая в массив. Порядок элементов не гарантируется. Возвращает пустой массив, если минимальные значения координат больше или равны максимальным.

  • longitude_min — минимальная долгота в диапазоне [-180°, 180°] типа Float32 или Float64.

  • latitude_min — минимальная широта в диапазоне [-90°, 90°] типа Float32 или Float64.

  • longitude_max — максимальная долгота в диапазоне [-180°, 180°] типа Float32 или Float64.

  • latitude_max — максимальная широта в диапазоне [-90°, 90°] типа Float32 или Float64.

  • precision — точность Geohash в диапазоне [1, 12] типа UInt8.

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

Функция генерирует исключение, если итоговый массив содержит более 10 000 000 элементов.

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

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

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

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

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

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

Ознакомиться с актуальным списком функций и их поведением можно в официальной документации ClickHouse.

Обратите внимание, что для функций в официальной документации ClickHouse может быть указана версия, в которой эти функции были введены. Это позволит определить, доступна ли рассматриваемая функция в вашей версии ClickHouse.

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

geoToH3(lat, lon, resolution)

Преобразует географические координаты широты и долготы (lat и lon) типа Float64 с указанным уровнем иерархии resolution в диапазоне [0, 15] типа UInt8 в индекс H3-ячейки типа UInt64. В случае ошибки возвращает 0.

h3CellAreaM2(index)

Вычисляет точную площадь ячейки по ее H3-индексу index типа UInt64 в квадратных метрах. Возвращает значение типа Float64.

h3CellAreaRads2(index)

Вычисляет точную площадь ячейки по ее H3-индексу index типа UInt64 в квадратных радианах. Возвращает значение типа Float64.

h3Distance(start, end)

Вычисляет расстояние между указанными H3-индексами start и end типа UInt64 в ячейках сетки. Возвращает количество ячеек сетки типа Int64. Если расстояние определить не удается, возвращает отрицательное число.

h3EdgeAngle(resolution)

Вычисляет среднюю длину ребра H3-ячейки в градах по переданному уровню иерархии resolution в диапазоне [0, 15] типа UInt8. Возвращает значение типа Float64.

h3EdgeLengthKm(resolution)

Вычисляет среднюю длину ребра H3-ячейки в километрах по переданному уровню иерархии resolution в диапазоне [0, 15] типа UInt8. Возвращает значение типа Float64.

h3EdgeLengthM(resolution)

Вычисляет среднюю длину ребра H3-ячейки в метрах по переданному уровню иерархии resolution в диапазоне [0, 15] типа UInt8. Возвращает значение типа Float64.

h3ExactEdgeLengthKm(index)

Вычисляет точную длину однонаправленного ребра в километрах по его H3-индексу index типа UInt64. Возвращает значение типа Float64.

h3ExactEdgeLengthM(index)

Вычисляет точную длину однонаправленного ребра в метрах по его H3-индексу index типа UInt64. Возвращает значение типа Float64.

h3ExactEdgeLengthRads(index)

Вычисляет точную длину однонаправленного ребра в радианах по его H3-индексу index типа UInt64. Возвращает значение типа Float64.

h3GetBaseCell(index)

Вычисляет номер базовой H3-ячейки по переданному H3-индексу index типа UInt64. Возвращает значение типа UInt8.

h3GetDestinationIndexFromUnidirectionalEdge(edge)

Вычисляет индекс целевой H3-ячейки по H3-индексу однонаправленного ребра edge типа UInt64. Возвращает значение типа UInt64. Генерирует исключение, если edge не является индексом однонаправленного ребра.

h3GetFaces(index)

Возвращает массив граней икосаэдра типа Array(UInt64), с которым пересекается H3-ячейка, имеющая указанный H3-индекс index типа UInt64.

h3GetIndexesFromUnidirectionalEdge(edge)

Вычисляет индексы исходной и целевой H3-ячеек для указанного H3-индекса однонаправленного ребра edge типа UInt64.

Возвращает кортеж, состоящий из двух значений tuple(origin, destination):

  • origin — H3-индекс исходной ячейки типа UInt64.

  • destination — H3-индекс целевой ячейки типа UInt64.

Генерирует исключение, если edge не является индексом однонаправленного ребра.

h3GetOriginIndexFromUnidirectionalEdge(edge)

Вычисляет индекс исходной H3-ячейки по H3-индексу однонаправленного ребра edge типа UInt64. Возвращает значение типа UInt64. Генерирует исключение, если edge не является индексом однонаправленного ребра.

h3GetPentagonIndexes(resolution)

Вычисляет пятиугольные H3-индексы при указанном уровне иерархии resolution в диапазоне [0, 15] типа UInt8. Возвращает массив типа Array(UInt64).

h3GetRes0Indexes()

Составляет массив всех H3-индексов с нулевым уровнем иерархии. Функция не принимает параметров. Возвращает значение типа Array(UInt64).

h3GetResolution(index)

Определяет уровень иерархии для указанного H3-индекса index типа UInt64. Возвращает уровень иерархии типа UInt8 в диапазоне [0, 15].

Если H3-индекс некорректен, функция возвращает неопределенное значение. Используйте h3IsValid(), чтобы проверить индекс.

h3GetUnidirectionalEdge(originIndex, destinationIndex)

Возвращает H3-индекс для однонаправленного ребра на основе указанных H3-индексов исходной originIndex и целевой destinationIndex ячеек. Для H3-ячеек, не являющихся соседями, возвращает 0. Все значения типа UInt64.

h3GetUnidirectionalEdgeBoundary(index)

Возвращает массив пар координат (lat, lon) типа Array(Tuple(Float64, Float64)), задающих однонаправленное ребро по H3-индексу index типа UInt64. Генерирует исключение, если index не является H3-индексом однонаправленного ребра.

h3GetUnidirectionalEdgesFromHexagon(index)

Возвращает массив H3-индексов типа Array(UInt64), представляющих каждое однонаправленное ребро для указанного H3-индекса index типа UInt64. Генерирует исключение, если index не является H3-индексом ячейки.

h3HexAreaKm2(resolution)

Вычисляет среднюю площадь H3-ячейки в квадратных километрах для заданного уровня иерархии resolution в диапазоне [0, 15] типа UInt8. Возвращает значение типа Float64.

h3HexAreaM2(resolution)

Вычисляет среднюю площадь H3-ячейки в квадратных метрах для заданного уровня иерархии resolution в диапазоне [0, 15] типа UInt8. Возвращает значение типа Float64.

h3HexRing(index, k)

Возвращает массив индексов кольца H3-ячеек типа Array(UInt64) на расстоянии k от указанной исходной ячейки index.

  • index — H3-индекс исходной ячейки типа UInt64.

  • k — расстояние от исходной H3-ячейки типа UInt64.

Если при построении кольца обнаруживается искажение сетки из-за наличия пятиугольников, функция возвращает пустой массив.

h3IndexesAreNeighbors(index1, index2)

Определяет, являются ли две ячейки, заданные H3-индексами index1 и index2 типа UInt64, соседними. Возвращает 1, если ячейки являются соседями, иначе — 0.

h3IsPentagon(index)

Определяет, является ли H3-индекс index типа UInt64 пятиугольной ячейкой. Возвращает 1, если индекс соответствует пятиугольной ячейке, иначе — 0.

h3IsResClassIII(index)

Определяет, имеет ли H3-индекс index типа UInt64 уровень иерархии с ориентацией класса III. Возвращает 1, если индекс относится к уровню иерархии с ориентацией класса III, иначе — 0.

h3IsValid(index)

Проверяет, является ли заданный H3-индекс index типа UInt64 корректным. Возвращает 1, если является корректным индексом H3, иначе — 0.

h3kRing(index, k)

Перечисляет все H3-ячейки, расположенные в радиусе k от заданного шестиугольника index, в случайном порядке. Возвращает массив индексов H3 типа Array(UInt64).

  • index — H3-индекс типа UInt64.

  • k — радиус типа UInt*.

h3Line(start, end)

Возвращает массив индексов H3 типа Array(UInt64), представляющих линию между двумя указанными индексами start и end типа UInt64.

h3NumHexagons(resolution)

Вычисляет количество уникальных H3-индексов для заданного уровня иерархии resolution в диапазоне [0, 15] типа UInt8. Возвращает значение типа Int64.

h3PointDistKm(lat1, lon1, lat2, lon2)

Вычисляет расстояние в километрах между двумя точками по их географическим координатам (lat1, lon1) и (lat2, lon2). Координаты задаются в градусах и имеют тип Float64. Расстояние рассчитывается по дуге большого круга с использованием формулы гаверсинуса. Возвращаемое значение имеет тип Float64.

h3PointDistM(lat1, lon1, lat2, lon2)

Вычисляет расстояние в метрах между двумя точками по их географическим координатам (lat1, lon1) и (lat2, lon2). Координаты задаются в градусах и имеют тип Float64. Расстояние рассчитывается по дуге большого круга с использованием формулы гаверсинуса. Возвращаемое значение имеет тип Float64.

h3PointDistRads(lat1, lon1, lat2, lon2)

Вычисляет расстояние в радианах между двумя точками по их географическим координатам (lat1, lon1) и (lat2, lon2). Координаты задаются в градусах и имеют тип Float64. Расстояние рассчитывается по дуге большого круга с использованием формулы гаверсинуса. Возвращаемое значение имеет тип Float64.

h3ToCenterChild(index, resolution)

Возвращает H3-индекс типа UInt64 центральной дочерней ячейки для заданной родительской ячейки с H3-индексом index типа UInt64 при указанном уровне иерархии resolution в диапазоне [0, 15] типа UInt8.

h3ToChildren(index, resolution)

Возвращает массив дочерних индексов типа Array(UInt64) для заданного индекса H3 index типа UInt64 при указанном уровне иерархии resolution в диапазоне [0, 15] типа UInt8.

h3ToGeo(index)

Преобразует индекс H3 index типа UInt64 в географические координаты центра индекса. Возвращает кортеж из широты и долготы tuple(lat, lon) центра индекса типа Float64.

h3ToGeoBoundary(index)

Преобразует индекс H3 index типа UInt64 в массив пар географических координат (lat, lon), соответствующий границе указанного индекса H3. Возвращает массив пар (lat, lon) типа Array(Float64, Float64).

h3ToParent(index, resolution)

Возвращает родительский индекс типа UInt64 для заданного индекса H3 index типа UInt64 при указанном уровне иерархии resolution в диапазоне [0, 15] типа UInt8.

h3ToString(index)

Преобразует индекс H3 index типа UInt64 в строковое представление. Возвращает значение типа String.

h3UnidirectionalEdgeIsValid(index)

Проверяет, является ли указанный H3-индекс index типа UInt64 корректным индексом однонаправленного ребра. Возвращает 1, если это однонаправленное ребро, иначе — 0.

stringToH3(index_str)

Преобразует строковое представление index_str типа String в формат индекса H3. Возвращает значение типа UInt64. При ошибке возвращает 0.

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

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

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

Индекс точки S2 имеет тип данных UInt64.

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

Ознакомиться с актуальным списком функций и их поведением можно в официальной документации ClickHouse.

Обратите внимание, что для функций в официальной документации ClickHouse может быть указана версия, в которой эти функции были введены. Это позволит определить, доступна ли рассматриваемая функция в вашей версии ClickHouse.

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

geoToS2(lon, lat)

Преобразует географические координаты с долготой lon и широтой lat типа Float64 в индекс точки S2.

s2CapContains(center, degrees, point)

Проверяет, содержит ли сферический сегмент, отсеченный плоскостью, заданную точку S2. Возвращает 1, если сферический сегмент содержит точку S2 с указанным индексом, иначе — 0.

  • center — индекс точки S2, соответствующий сферическому сегменту, типа UInt64.

  • degrees — радиус сферического сегмента в градусах типа Float64.

  • point — индекс точки S2 типа UInt64.

s2CapUnion(center1, radius1, center2, radius2)

Определяет наименьший сферический сегмент, содержащий два указанных входных сферических сегмента. Возвращает центр и радиус наименьшего сферического сегмента, содержащего оба входных сферических сегмента. Центр задается индексом точки S2 типа UInt64, радиус — числом типа Float64.

  • center1, center2 — индексы точек S2 типа UInt64, соответствующие двум входным сферическим сегментам.

  • radius1, radius2 — радиусы двух входных сферических сегментов в градусах типа Float64.

s2CellsIntersect(s2index1, s2index2)

Определяет, пересекаются ли две заданные S2-ячейки s2index1 и s2index2. Возвращает 1, если ячейки пересекаются, иначе — 0.

s2GetNeighbors(s2index)

Возвращает соседние индексы S2 для указанного s2index. Каждая ячейка в системе S2 представляет собой четырехугольник, ограниченный четырьмя геодезическими линиями. Возвращает массив из четырех соседних индексов array[s2index1, s2index3, s2index2, s2index4] типа Array(UInt64).

s2RectAdd(s2pointLow, s2pointHigh, s2Point)

Увеличивает ограничивающий прямоугольник так, чтобы он включал заданную точку S2. Возвращает нижний s2PointLow и верхний s2PointHigh идентификаторы ячейки S2 типа UInt64, соответствующие расширенному прямоугольнику.

  • s2PointLow — нижний индекс точки S2, соответствующий прямоугольнику. Значение типа UInt64.

  • s2PointHigh — верхний индекс точки S2, соответствующий прямоугольнику. Значение типа UInt64.

  • s2Point — целевой индекс точки S2. Значение типа UInt64.

В системе S2 прямоугольник представляется типом S2Region с именем S2LatLngRect, который задает прямоугольник в координатах широты и долготы.

s2RectContains(s2PointLow, s2PointHigh, s2Point)

Определяет, содержит ли заданный прямоугольник точку S2. Возвращает 1, если прямоугольник содержит указанную точку S2, иначе — 0.

  • s2PointLow — нижний индекс точки S2, соответствующий прямоугольнику. Значение типа UInt64.

  • s2PointHigh — верхний индекс точки S2, соответствующий прямоугольнику. Значение типа UInt64.

  • s2Point — целевой индекс точки S2. Значение типа UInt64.

В системе S2 прямоугольник представляется типом S2Region с именем S2LatLngRect, который задает прямоугольник в координатах широты и долготы.

s2RectIntersection(s2Rect1PointLow, s2Rect1PointHigh, s2Rect2PointLow, s2Rect2PointHigh)

Определяет наименьший прямоугольник, содержащий пересечение указанных прямоугольников. Возвращает нижний и верхний идентификаторы ячейки S2 типа UInt64, соответствующие прямоугольнику, содержащему пересечение заданных прямоугольников.

  • s2Rect1PointLow, s2Rect1PointHigh — нижний и верхний индексы точек S2, соответствующие первому прямоугольнику. Значение типа UInt64.

  • s2Rect2PointLow, s2Rect2PointHigh — нижний и верхний индексы точек S2, соответствующие второму прямоугольнику. Значение типа UInt64.

В системе S2 прямоугольник представляется типом S2Region с именем S2LatLngRect, который задает прямоугольник в координатах широты и долготы.

s2RectUnion(s2Rect1PointLow, s2Rect1PointHigh, s2Rect2PointLow, s2Rect2PointHigh)

Объединяет два прямоугольника S2. Возвращает нижний и верхний идентификаторы ячейки S2 типа UInt64, соответствующие объединенному прямоугольнику.

  • s2Rect1PointLow, s2Rect1PointHigh — нижний и верхний индексы точек S2, соответствующие первому прямоугольнику. Значение типа UInt64.

  • s2Rect2PointLow, s2Rect2PointHigh — нижний и верхний индексы точек S2, соответствующие второму прямоугольнику. Значение типа UInt64.

В системе S2 прямоугольник представляется типом S2Region с именем S2LatLngRect, который задает прямоугольник в координатах широты и долготы.

s2ToGeo(s2index)

Преобразует индекс точки S2 s2index типа UInt64 в географические координаты (longitude, latitude) типа Tuple(Float64, Float64).

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

Этот раздел содержит функции для геопространственного анализа и обработки геометрических объектов (Polygon, MultiPolygon, Ring, LineString, MultiLineString, Point, MultiPoint). Функции поддерживают вычисления как в декартовой системе координат, так и в сферической.

  • Cartesian означает, что координаты заданы в декартовой системе координат. Использование такой системы координат ускоряет вычисления, но не дает точного результата.

  • Spherical означает, что координаты интерпретируются как координаты на идеальной сфере, которая ближе к модели реальной Земли.

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

Ознакомиться с актуальным списком функций и их поведением можно в официальной документации ClickHouse.

Обратите внимание, что для функций в официальной документации ClickHouse может быть указана версия, в которой эти функции были введены. Это позволит определить, доступна ли рассматриваемая функция в вашей версии ClickHouse.

Функции для работы с геометрическими данными
Функция Описание

polygonAreaCartesian(polygon)

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

polygonAreaSpherical(polygon)

Вычисляет площадь поверхности полигона polygon на сфере. Возвращает значение типа Float64.

polygonConvexHullCartesian(multipolygon)

Вычисляет выпуклую оболочку для multipolygon в декартовой системе координат. Возвращает значение типа Polygon.

polygonPerimeterCartesian(polygon)

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

polygonPerimeterSpherical(polygon)

Вычисляет периметр полигона polygon на сфере. Возвращает значение типа Float64.

polygonsDistanceCartesian(polygon1, polygon2)

Вычисляет расстояние между полигонами polygon1 и polygon2 в декартовой системе координат. Возвращает значение типа Float64.

polygonsDistanceSpherical(polygon1, polygon2)

Вычисляет минимальное расстояние между полигонами polygon1 и polygon2 на сфере. Возвращает значение типа Float64.

polygonsEqualsCartesian(polygon1, polygon2)

Проверяет два полигона polygon1 и polygon2 на равенство в декартовой системе координат. Возвращает 1, если полигоны равны, иначе — 0.

polygonsIntersectCartesian(polygon1, polygon2)

Проверяет два полигона polygon1 и polygon2 на пересечение в декартовой системе координат. Возвращает 1, если полигоны имеют общую область или границу, иначе — 0.

polygonsIntersectionCartesian(polygon1, polygon2)

Вычисляет пересечение (AND) полигонов polygon1 и polygon2 в декартовой системе координат. Возвращает значение типа MultiPolygon.

polygonsIntersectionSpherical(polygon1, polygon2)

Вычисляет пересечение (AND) полигонов polygon1 и polygon2 на сфере. Возвращает значение типа MultiPolygon.

polygonsIntersectSpherical(polygon1, polygon2)

Проверяет два полигона polygon1 и polygon2 на пересечение на сфере. Возвращает 1, если полигоны имеют общую область или границу, иначе — 0.

polygonsSymDifferenceCartesian(polygon1, polygon2)

Вычисляет пространственную симметрическую разность (XOR) двух полигонов polygon1 и polygon2 в декартовой системе координат. Возвращает значение типа MultiPolygon.

polygonsSymDifferenceSpherical(polygon1, polygon2)

Вычисляет пространственную симметрическую разность (XOR) двух полигонов polygon1 и polygon2 на сфере. Возвращает значение типа MultiPolygon.

polygonsUnionCartesian(polygon1, polygon2)

Вычисляет объединение (OR) полигонов polygon1 и polygon2 в декартовой системе координат. Возвращает значение типа MultiPolygon.

polygonsUnionSpherical(polygon1, polygon2)

Вычисляет объединение (OR) полигонов polygon1 и polygon2 на сфере. Возвращает значение типа MultiPolygon.

polygonsWithinCartesian(polygon1, polygon2)

Проверяет, расположен ли полигон polygon1 внутри polygon2 в декартовой системе координат. Возвращает 1, если polygon1 расположен внутри polygon2, иначе — 0.

polygonsWithinSpherical(polygon1, polygon2)

Проверяет, расположен ли полигон polygon1 целиком внутри polygon2 на сфере. Возвращает 1, если polygon1 расположен внутри polygon2, иначе — 0.

readWKBLineString(wkb_string)

Преобразует строку wkb_string в формате WKB (Well-Known Binary), описывающую геометрический объект LineString, в значение типа LineString.

readWKBMultiLineString(wkb_string)

Преобразует строку wkb_string в формате WKB (Well-Known Binary), описывающую геометрический объект MultiLineString, в значение типа MultiLineString.

readWKBMultiPoint(wkb_string)

Преобразует строку wkb_string в формате WKB (Well-Known Binary), описывающую геометрический объект MultiPoint, в значение типа MultiPoint.

readWKBMultiPolygon(wkb_string)

Преобразует строку wkb_string в формате WKB (Well-Known Binary), описывающую геометрический объект MultiPolygon, в значение типа MultiPolygon.

readWKBPoint(wkb_string)

Преобразует строку wkb_string в формате WKB (Well-Known Binary), описывающую геометрический объект Point, в значение типа Point.

readWKBPolygon(wkb_string)

Преобразует строку wkb_string в формате WKB (Well-Known Binary), описывающую геометрический объект Polygon, в значение типа Polygon.

readWKTLineString(wkt_string)

Преобразует строку wkt_string в формате WKT (Well-Known Text), описывающую геометрический объект LineString, в значение типа LineString.

readWKTMultiLineString(wkt_string)

Преобразует строку wkt_string в формате WKT (Well-Known Text), описывающую геометрический объект MultiLineString, в значение типа MultiLineString.

readWKTMultiPoint(wkt_string)

Преобразует строку wkt_string в формате WKT (Well-Known Text), описывающую геометрический объект MultiPoint, в значение типа MultiPoint.

readWKTMultiPolygon(wkt_string)

Преобразует строку wkt_string в формате WKT (Well-Known Text), описывающую геометрический объект MultiPolygon, в значение типа MultiPolygon.

readWKTPoint(wkt_string)

Преобразует строку wkt_string в формате WKT (Well-Known Text), описывающую геометрический объект Point, в значение типа Point.

readWKTPolygon(wkt_string)

Преобразует строку wkt_string в формате WKT (Well-Known Text), описывающую геометрический объект Polygon, в значение типа Polygon.

readWKTRing(wkt_string)

Извлекает внешнее кольцо из строки wkt_string в формате WKT (Well-Known Text), описывающей геометрический объект Polygon, и возвращает его в виде значения типа Ring (замкнутой линии).

Svg(geometry, [style])
SVG(geometry, [style])
svg(geometry, [style])

Возвращает строку типа String с выбранными тегами SVG-объектов на основе геоданных geometry. Необязательный параметр style типа String задает имя стиля. Поддерживаются следующие SVG-объекты: SVG-круг, SVG-многоугольник и SVG-путь.

wkt(geo_data)

Возвращает геометрический объект WKT (Well-Known Text) из различных геометрических типов данных.

Параметр geo_data может иметь один из следующих геометрических типов данных или их базовых примитивных типов: Point, MultiPoint, Ring, Polygon, MultiPolygon, LineString, MultiLineString.

Возвращаются следующие соответствующие WKT-объекты: POINT, MULTIPOINT, RING, POLYGON, MULTIPOLYGON, LINESTRING, MULTILINESTRING.

Была ли полезна эта страница?

Обратная связь