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— широта второй точки в градусах.
pointInEllipses
x, y— координаты точки на плоскости.xᵢ, yᵢ— координаты центраi-го эллипса.aᵢ, bᵢ— осиi-го эллипса в единицах координатx,y.
2+4⋅n, где n — количество эллипсов.
Возвращаемые значения
1, если точка находится внутри хотя бы одного из эллипсов; 0, если нет.
Пример
pointInPolygon
(x, y)— Координаты точки на плоскости. Тип данных — Tuple — кортеж из двух чисел.[(a, b), (c, d) ...]— Вершины полигона. Тип данных — Array. Каждая вершина задаётся парой координат(a, b). Вершины следует указывать по часовой стрелке или против часовой стрелки. Минимальное число вершин — 3. Полигон должен быть константой.- Функция поддерживает полигоны с отверстиями (вырезанными областями). Тип данных — Polygon. Либо передайте весь
Polygonкак второй аргумент, либо сначала передайте внешний Ring, а затем каждое отверстие как отдельный дополнительный аргумент. - Функция также поддерживает
MultiPolygon. Тип данных — MultiPolygon. Либо передайте весьMultiPolygonкак второй аргумент, либо перечислите каждый входящий в него полигон как отдельный аргумент.
1, если точка находится внутри полигона, 0, если нет.
Если точка находится на границе полигона, функция может вернуть либо 0, либо 1.
Пример
Примечание • Вы можете установитьvalidate_polygons = 0, чтобы отключить проверку геометрии. •pointInPolygonисходит из того, что каждый полигон сформирован корректно. Если входной полигон самопересекается, содержит кольца в неправильном порядке или перекрывающиеся рёбра, результаты становятся ненадёжными — особенно для точек, которые лежат точно на ребре, в вершине или внутри самопересечения, где невозможно однозначно определить, что считать “внутри”, а что — “снаружи”. • Когда аргумент полигона является константой, а точка задаётся с использованием индексируемых столбцов ключа (например,pointInPolygon((x, y), constant_polygon)в таблице, гдеx, yвходят вPRIMARY KEYили покрываются индексомminmax), ClickHouse может использовать и первичный ключ, и индексы пропуска данныхminmax, чтобы отсечь нерелевантные гранулы.