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
(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
(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
(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*.
String.
Пример
MGRSToGeo
(долгота, широта). Это обратная операция по отношению к 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).
1, если точка находится внутри полигона, 0, если нет.
Если точка находится на границе полигона, функция может вернуть либо 0, либо 1.
Пример
Примечание • Вы можете установитьvalidate_polygons = 0, чтобы отключить проверку геометрии. •pointInPolygonисходит из того, что каждый полигон сформирован корректно. Если входной полигон самопересекается, содержит кольца в неправильном порядке или перекрывающиеся рёбра, результаты становятся ненадёжными — особенно для точек, которые лежат точно на ребре, в вершине или внутри самопересечения, где невозможно однозначно определить, что считать “внутри”, а что — “снаружи”. • Когда аргумент полигона является константой, а точка задаётся с использованием индексируемых столбцов ключа (например,pointInPolygon((x, y), constant_polygon)в таблице, гдеx, yвходят вPRIMARY KEYили покрываются индексомminmax), ClickHouse может использовать и первичный ключ, и индексы пропуска данныхminmax, чтобы отсечь нерелевантные гранулы.