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作为第二个参数传入,也可以先传入外环,再将每个孔分别作为额外参数传入。 - 该函数也支持
MultiPolygon。数据类型 — MultiPolygon。可以将整个MultiPolygon作为第二个参数传入,也可以将其中的每个组成多边形分别作为独立参数传入。
1;否则返回 0。
如果点位于多边形边界上,函数可能返回 0 或 1。
示例
注意 • 你可以设置validate_polygons = 0以跳过几何校验。 •pointInPolygon假定每个多边形都是合法的。如果输入存在自相交、环顺序错误或边重叠,结果就会变得不可靠——尤其是对于恰好位于边上、顶点上,或位于自相交区域内且“内部”与“外部”的概念未定义的点。 • 当多边形参数是常量,且点是用已建立索引的键列表示时 (例如,在x, y是PRIMARY KEY的一部分或被minmax索引覆盖的表上使用pointInPolygon((x, y), constant_polygon)) ,ClickHouse 可以同时使用主键和minmax数据跳过索引来跳过无关粒度。