共用方式為

st_geohash 函数

适用于:已勾选“是”的 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