Skip to main content

greatCircleDistance

Вычисляет расстояние между двумя точками на поверхности Земли по формуле большого круга.
Входные параметры
  • lon1Deg — долгота первой точки в градусах. Диапазон: [-180°, 180°].
  • lat1Deg — широта первой точки в градусах. Диапазон: [-90°, 90°].
  • lon2Deg — долгота второй точки в градусах. Диапазон: [-180°, 180°].
  • lat2Deg — широта второй точки в градусах. Диапазон: [-90°, 90°].
Положительные значения соответствуют северной широте и восточной долготе, отрицательные — южной широте и западной долготе. Возвращаемое значение Расстояние между двумя точками на поверхности Земли в метрах. Вызывает исключение, если значения входных параметров выходят за пределы диапазона. Пример

geoDistance

Аналогично greatCircleDistance, но вычисляет расстояние на эллипсоиде WGS-84, а не на сфере. Это более точное приближение геоида Земли. Производительность такая же, как у greatCircleDistance (без потери производительности). Для вычисления расстояний на Земле рекомендуется использовать geoDistance. Техническое примечание: для достаточно близких точек расстояние вычисляется с использованием плоского приближения и метрики на касательной плоскости в средней точке координат.
Входные параметры
  • lon1Deg — долгота первой точки в градусах. Диапазон: [-180°, 180°].
  • lat1Deg — широта первой точки в градусах. Диапазон: [-90°, 90°].
  • lon2Deg — долгота второй точки в градусах. Диапазон: [-180°, 180°].
  • lat2Deg — широта второй точки в градусах. Диапазон: [-90°, 90°].
Положительные значения соответствуют северной широте и восточной долготе, отрицательные — южной широте и западной долготе. Возвращаемое значение Расстояние между двумя точками на поверхности Земли в метрах. Генерирует исключение, если значения входных параметров выходят за пределы диапазона. Пример

greatCircleAngle

Вычисляет центральный угол между двумя точками на земной поверхности по формуле большого круга.
Входные параметры
  • lon1Deg — долгота первой точки в градусах.
  • lat1Deg — широта первой точки в градусах.
  • lon2Deg — долгота второй точки в градусах.
  • lat2Deg — широта второй точки в градусах.
Возвращаемое значение Центральный угол между двумя точками в градусах. Пример

geoToUTM

Преобразует географические координаты WGS84 (longitude, latitude) в координаты Universal Transverse Mercator (UTM). UTM — это набор из 60 поперечных проекций Меркатора, каждая из которых охватывает зону по долготе шириной 6° и отображает географические координаты на плоскую сетку в метрах. Зона автоматически выбирается по долготе с учетом стандартных исключений для Норвегии и Шпицбергена, если явно не указана zone. UTM определена только для широт в диапазоне [-80°, 84°]; для полярных областей используется отдельная система UPS.
Аргументы
  • longitude — Долгота в градусах. Диапазон: [-180°, 180°]. Float32/Float64.
  • latitude — Широта в градусах. Диапазон: [-80°, 84°]. Float32/Float64.
  • zone — Необязательно. Принудительно использовать эту зону UTM для проекции вместо автоматического выбора. Диапазон: [1, 60]. (U)Int*.
Возвращаемое значение Именованный кортеж (easting, northing, zone, band): easting и northing в метрах (Float64), номер зоны UTM zone (UInt8) и буква широтной полосы MGRS band (FixedString(1)). Значение band 'N' или любая следующая буква обозначает северное полушарие. Генерирует исключение, если широта выходит за пределы [-80°, 84°] или долгота выходит за пределы [-180°, 180°]. Пример

UTMToGeo

Преобразует координаты UTM обратно в географические координаты WGS84 (longitude, latitude). Это функция, обратная geoToUTM.
Аргументы
  • easting — восточное смещение в метрах (включая ложное восточное смещение 500000 м). (U)Int*/Float*.
  • northing — северное смещение в метрах (включая ложное северное смещение 10000000 м для южного полушария). (U)Int*/Float*.
  • zone — номер зоны UTM. Диапазон: [1, 60]. (U)Int*.
  • is_north — полушарие: 1 для северного полушария, 0 для южного. (U)Int*.
Возвращаемое значение Именованный кортеж (longitude, latitude) в градусах. Tuple(Float64, Float64). Пример

geoToMGRS

Кодирует географические координаты WGS84 (longitude, latitude) в строку в формате Military Grid Reference System (MGRS). Строка имеет вид <zone><band><100km square><easting><northing>, например 31UDQ4825111935. Аргумент precision задаёт количество цифр для каждой из координат easting и northing: 5 (по умолчанию) для 1 м, 4 для 10 м, 3 для 100 м, 2 для 1 км, 1 для 10 км и 0 — только для квадрата сетки 100 км. Система MGRS определена только для широт в диапазоне [-80°, 84°].
Аргументы
  • longitude — Долгота в градусах. Диапазон: [-180°, 180°]. Float32/Float64.
  • latitude — Широта в градусах. Диапазон: [-80°, 84°]. Float32/Float64.
  • precision — Необязательно. Количество цифр для значений восточного и северного смещения. По умолчанию: 5. Диапазон: [0, 5]. (U)Int*.
Возвращаемое значение Строка координат MGRS. String. Пример

MGRSToGeo

Декодирует строку MGRS в географические координаты WGS84 (долгота, широта). Это обратная операция по отношению к geoToMGRS. Возвращаемая точка — центр соответствующего квадрата сетки, поэтому точность результата соответствует точности, закодированной в строке. Пробельные символы во входных данных игнорируются, а регистр букв не учитывается.
Аргументы
  • mgrs — строка координат MGRS для декодирования. String/FixedString.
Возвращаемое значение Именованный кортеж (longitude, latitude) в градусах. Tuple(Float64, Float64). Пример

pointInEllipses

Проверяет, принадлежит ли точка хотя бы одному из эллипсов. Координаты задаются в декартовой системе координат.
Входные параметры
  • x, y — координаты точки на плоскости.
  • xᵢ, yᵢ — координаты центра i-го эллипса.
  • aᵢ, bᵢ — оси i-го эллипса в единицах координат x, y.
Количество входных параметров должно быть равно 2+4⋅n, где n — количество эллипсов. Возвращаемые значения 1, если точка находится внутри хотя бы одного из эллипсов; 0, если нет. Пример

pointInPolygon

Проверяет, принадлежит ли точка многоугольнику на плоскости.
Входные значения
  • (x, y) — Координаты точки на плоскости. Тип данных — Tuple — кортеж из двух чисел или Point.
  • [(a, b), (c, d) ...] — Вершины полигона. Тип данных — Array или Ring. Каждая вершина задаётся парой координат (a, b). Вершины следует указывать по часовой стрелке или против часовой стрелки. Минимальное число вершин — 3.
  • Функция поддерживает полигоны с отверстиями (вырезанными областями). Тип данных — Polygon. Либо передайте весь Polygon как второй аргумент, либо сначала передайте внешний Ring, а затем каждое отверстие как отдельный дополнительный аргумент.
  • Функция также поддерживает MultiPolygon. Тип данных — MultiPolygon. Либо передайте весь MultiPolygon как второй аргумент, либо перечислите каждый входящий в него полигон как отдельный аргумент.
  • Аргумент полигона также может быть столбцом Geometry, содержащим значения полигональных типов (Ring, Polygon или MultiPolygon).
Полигональные типы (Ring, Polygon, MultiPolygon и Geometry) можно передавать либо как константы, либо как обычные (неконстантные) столбцы таблицы. Когда полигон передаётся через несколько отдельных аргументов (внешний Ring, за которым следуют отверстия, или несколько полигонов в составе мультиполигона), все эти аргументы должны быть константами. Возвращаемые значения 1, если точка находится внутри полигона, 0, если нет. Если точка находится на границе полигона, функция может вернуть либо 0, либо 1. Пример
Полигон также можно задавать с помощью именованных геометрических типов данных, в том числе в виде столбца таблицы:
Примечание • Вы можете установить validate_polygons = 0, чтобы отключить проверку геометрии. • pointInPolygon исходит из того, что каждый полигон сформирован корректно. Если входной полигон самопересекается, содержит кольца в неправильном порядке или перекрывающиеся рёбра, результаты становятся ненадёжными — особенно для точек, которые лежат точно на ребре, в вершине или внутри самопересечения, где невозможно однозначно определить, что считать “внутри”, а что — “снаружи”. • Когда аргумент полигона является константой, а точка задаётся с использованием индексируемых столбцов ключа (например, pointInPolygon((x, y), constant_polygon) в таблице, где x, y входят в PRIMARY KEY или покрываются индексом minmax), ClickHouse может использовать и первичный ключ, и индексы пропуска данных minmax, чтобы отсечь нерелевантные гранулы.
Последнее изменение 23 июля 2026 г.