用于处理 Geohash 的函数
Geohash
Geohash 是一种地理编码系统,它将地球表面划分为网格状的区域(bucket),并将每个单元编码为由字母和数字组成的短字符串。它是一种分层数据结构,因此 geohash 字符串越长,表示的地理位置就越精确。
如果需要手动将地理坐标转换为 geohash 字符串,可以使用 geohash.org。
geohashEncode
将纬度和经度编码为 geohash 字符串。
语法
输入值
longitude— 要编码的坐标中的经度部分。浮点数,取值范围为[-180°, 180°]。Float。latitude— 要编码的坐标中的纬度部分。浮点数,取值范围为[-90°, 90°]。Float。precision(可选)— 生成的编码字符串的长度。默认值为12。取值范围为[1, 12]的整数。Int8。
注意
- 所有坐标参数必须是相同的类型:要么全部为
Float32,要么全部为Float64。 - 对于
precision参数,任何小于1或大于12的值都会被自动转换为12,且不会报错。
返回值
- 编码后的坐标所对应的字母数字字符串(使用经过修改的 base32 编码字母表)。String。
示例
查询:
结果:
geohashDecode
将任意 geohash 编码字符串解码为经度和纬度。
语法
输入值
hash_str— Geohash 编码的字符串。
返回值
示例
geohashesInBox
返回一个由指定精度的 geohash 编码字符串组成的数组,这些字符串对应的区域位于给定矩形区域内或与其边界相交,本质上是将一个二维网格扁平化为数组。
语法
参数
longitude_min— 最小经度。范围:[-180°, 180°]。Float。latitude_min— 最小纬度。范围:[-90°, 90°]。Float。longitude_max— 最大经度。范围:[-180°, 180°]。Float。latitude_max— 最大纬度。范围:[-90°, 90°]。Float。precision— Geohash 精度。范围:[1, 12]。UInt8。
注意
所有坐标参数的类型必须相同:要么都是 Float32,要么都是 Float64。
返回值
- 一个字符串数组,数组元素为长度为
precision的 geohash 网格框字符串,覆盖给定区域,且不应依赖元素的顺序。Array(String)。 []- 当最小纬度和经度值不小于对应的最大值时返回空数组。
注意
如果结果数组包含的元素数量超过 10'000'000 个,函数会抛出异常。
示例
查询:
结果: