使用great-circle distance公式计算地球表面两点之间的距离。
greatCircleDistance(lon1Deg, lat1Deg, lon2Deg, lat2Deg)
输入参数
lon1Deg
— 第一个点的经度,单位:度,范围: [-180°, 180°]
。lat1Deg
— 第一个点的纬度,单位:度,范围: [-90°, 90°]
。lon2Deg
— 第二个点的经度,单位:度,范围: [-180°, 180°]
。lat2Deg
— 第二个点的纬度,单位:度,范围: [-90°, 90°]
。正值对应北纬和东经,负值对应南纬和西经。
返回值
地球表面的两点之间的距离,以米为单位。
当输入参数值超出规定的范围时将抛出异常。
示例
SELECT greatCircleDistance(55.755831, 37.617673, -55.755831, -37.617673)
┌─greatCircleDistance(55.755831, 37.617673, -55.755831, -37.617673)─┐ │ 14132374.194975413 │ └───────────────────────────────────────────────────────────────────┘
检查指定的点是否至少包含在指定的一个椭圆中。 下述中的坐标是几何图形在笛卡尔坐标系中的位置。
pointInEllipses(x, y, x₀, y₀, a₀, b₀,...,xₙ, yₙ, aₙ, bₙ)
输入参数
x, y
— 平面上某个点的坐标。xᵢ, yᵢ
— 第i个椭圆的中心坐标。aᵢ, bᵢ
— 以x, y坐标为单位的第i个椭圆的轴。输入参数的个数必须是2+4⋅n
,其中n
是椭圆的数量。
返回值
如果该点至少包含在一个椭圆中,则返回1
;否则,则返回0
。
示例
SELECT pointInEllipses(55.755831, 37.617673, 55.755831, 37.617673, 1.0, 2.0)
┌─pointInEllipses(55.755831, 37.617673, 55.755831, 37.617673, 1., 2.)─┐ │ 1 │ └─────────────────────────────────────────────────────────────────────┘
检查指定的点是否包含在指定的多边形中。
pointInPolygon((x, y), [(a, b), (c, d) ...], ...)
输入参数
(x, y)
— 平面上某个点的坐标。元组类型,包含坐标的两个数字。[(a, b), (c, d) ...]
— 多边形的顶点。阵列类型。每个顶点由一对坐标(a, b)
表示。顶点可以按顺时针或逆时针指定。顶点的个数应该大于等于3。同时只能是常量的。返回值
如果坐标点存在在多边形范围内,则返回1
。否则返回0
。 如果坐标位于多边形的边界上,则该函数可能返回1
,或可能返回0
。
示例
SELECT pointInPolygon((3, 5), [(6, 0), (8, 4), (5, 8), (0, 2)]) AS res
┌─res─┐ │ 1 │ └─────┘
将经度和纬度编码为geohash-string,请参阅 http://geohash.org/,https://en.wikipedia.org/wiki/Geohash。
geohashEncode(longitude, latitude, [precision])
输入值
[-180°,180°]
范围内[-90°,90°]
范围内12
。取值范围为[1,12]
。任何小于1
或大于12
的值都会默认转换为12
。返回值
示例
SELECT geohashEncode(-5.60302734375, 42.593994140625, 0) AS res
┌─res──────────┐ │ ezs42d000000 │ └──────────────┘
将任何geohash编码的字符串解码为经度和纬度。
输入值
返回值
Float64
值的2元组。示例
SELECT geohashDecode('ezs42') AS res
┌─res─────────────────────────────┐ │ (-5.60302734375,42.60498046875) │ └─────────────────────────────────┘
计算指定的分辨率的H3索引(lon, lat)
。
geoToH3(lon, lat, resolution)
输入值
lon
— 经度。 Float64类型。lat
— 纬度。 Float64类型。resolution
— 索引的分辨率。 取值范围为: [0, 15]
。 UInt8类型。返回值
UInt64类型。
示例
SELECT geoToH3(37.79506683, 55.71290588, 15) as h3Index
┌────────────h3Index─┐ │ 644325524701193974 │ └────────────────────┘
计算在指定精度下,最小包含指定经纬范围的最小图形的 geohash 数组。
输入值
[-180°,180°]
范围内[-90°,90°]
范围内[-180°,180°]
范围内[-90°,90°]
范围内[1, 12]
内的UInt8
类型的数字请注意,上述所有的坐标参数必须同为Float32
或Float64
中的一种类型。
返回值
请注意,如果生成的数组长度超过10000时,则函数将抛出异常。
示例
SELECT geohashesInBox(24.48, 40.56, 24.785, 40.81, 4) AS thasos
┌─thasos──────────────────────────────────────┐ │ ['sx1q','sx1r','sx32','sx1w','sx1x','sx38'] │ └─────────────────────────────────────────────┘