适用于:
Databricks SQL
Databricks Runtime 17.1 及更高版本
重要
此功能目前以公共预览版提供。
注释
此功能在 Databricks SQL 经典仓库上不可用。 若要详细了解 Databricks SQL 仓库,请参阅 SQL 仓库类型。
以给定精度返回输入 GEOMETRY 值的地理哈希。 如果未指定精度,表达式的行为就像指定的精度为 -1 一样。
语法
st_geohash ( geoExpr [, precisionExpr] )
论据
-
geoExpr:一个GEOMETRY值。 -
precisionExpr:输出 geohash 的可选精度(有效位数)。
退货
STRING 类型的值,表示输入几何图形的 geohash。
更确切地说:
- 如果输入几何图形为空,则表达式返回
NULL。 - 如果精度为 0,则返回空字符串。
- 如果精度为正值,则表达式以指定的精度返回几何图形边界框中心的地理hash 值。
- 如果精度是负数,则表达式返回对应于最大精度(但不超过 12)的 geohash 网格单元的 geohash 值,该值能够完全覆盖输入几何图形的边界框。 如果此类 geohash 网格存储桶不存在,则返回空字符串。
如果输入为 NULL.,则函数返回 NULL 。
错误条件
- 如果输入包含 [-180, 180] 范围之外的经度坐标,则函数将返回 ST_INVALID_ARGUMENT。LONGITUDE_OUT_OF_BOUNDS。
- 如果输入包含 [-90, 90] 范围之外的纬度坐标,函数将返回 ST_INVALID_ARGUMENT。LATITUDE_OUT_OF_BOUNDS。
例子
-- 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