适用于: Databricks Runtime 17.1 及更高版本
重要
此功能目前以公共预览版提供。
以指定的精度返回输入几何对象的地理哈希。 如果未指定精度,表达式的行为就像指定的精度为 -1 一样。
语法
st_geohash ( geo [, precision] )
论据
-
geo
:一个GEOMETRY
值。 -
precision
:输出 geohash 的可选精度(有效位数)。
退货
STRING
类型的值,表示输入几何图形的 geohash。
更确切地说:
- 如果输入几何图形为空,则表达式返回
NULL
。 - 如果精度为 0,则返回空字符串。
- 如果精度为正值,则表达式以指定的精度返回几何图形边界框中心的地理hash 值。
- 如果精度是负数,则表达式返回对应于最大精度(但不超过 12)的 geohash 网格单元的 geohash 值,该值能够完全覆盖输入几何图形的边界框。 如果此类 geohash 网格存储桶不存在,则返回空字符串。
如果输入为 NULL
.,则函数返回 NULL
。
错误条件
- 如果输入包含 [-180, 180] 范围之外的经度坐标,则函数将返回 ST_INVALID_ARGUMENT。
- 如果输入包含 [-90, 90] 范围之外的纬度坐标,则函数将返回 ST_INVALID_ARGUMENT。
例子
-- Returns the geohash of a point at default precision.
> SELECT st_geohash(st_geomfromtext('POINT(-122.4261475 37.77374268)'));
9q8yyhebpbpb
-- Returns the geohash of a point at precision 6.
> SELECT st_geohash(st_geomfromtext('POINT(-122.4261475 37.77374268)'), 6);
9q8yyh
-- Returns the geohash of a linestring at default precision.
> SELECT st_geohash(st_geomfromtext('LINESTRING(-122.43 37.77,-122.42 37.78)'));
9q8yy
-- Returns the geohash of a linestring at precision 9.
> SELECT st_geohash(st_geomfromtext('LINESTRING(-122.43 37.77,-122.42 37.78)'), 9);
9q8yyhsz6
-- Returns empty string for a large geometry that doesn't fit in any geohash bucket.
> SELECT length(st_geohash(st_geomfromtext('LINESTRING(0 0,60 60)')));
0