h3_hexring
函数
适用于: Databricks SQL Databricks Runtime 11.3 LTS 及更高版本
返回一个 H3 单元格数组,形成一个以原点 H3 单元格为中心的空心六边形环,并且与原点 H3 单元格的网格距离为 k
。
语法
h3_hexring ( h3CellIdExpr, kExpr )
参数
h3CellIdExpr
:表示 H3 单元格 ID 的 BIGINT 表达式或十六进制 STRING 表达式。kExpr
:表示网格距离的 INTEGER 表达式。kExpr
必须为非负值。
返回
与 h3CellIdExpr
表达式类型相同的值的 ARRAY,对应于与输入 H3 单元格具有相同分辨率的 H3 单元格 ID,以及在距离 k
处形成以原点 H3 单元格为中心的空心环的 H3 单元格 ID,其中 k
是 kExpr
的值。
如果任一输入表达式为 NULL,则该函数返回 NULL。
该函数对输入参数是否为有效的 H3 单元格 ID 进行部分验证。 有效 H3 ID 的必要不充分条件是其值介于 0x08001fffffffffff
和 0x08ff3b6db6db6db6
之间。
如果输入单元格 ID 不是有效的单元格 ID,则表示该函数的行为未定义。
如果网格距离的值为零,则返回的数组包含一个等于输入 H3 单元格 ID 的值。
错误条件
- 如果
h3CellIdExpr
是无法转换为 BIGINT 的 STRING 或对应于小于0x08001fffffffffff
或大于0x08ff3b6db6db6db6
的 BIGINT 值,则该函数返回 H3_INVALID_CELL_ID。 - 如果
kExpr
为负数,则该函数返回 H3_INVALID_GRID_DISTANCE_VALUE。 - 如果原点单元格的
k
-ring 中的任何位置都有五边形,则该函数返回 H3_PENTAGON_ENCOUNTERED_ERROR。
示例
-- Simple example where the first argument is a BIGINT.
> SELECT h3_hexring(599686042433355775, 1)
[599686014516068351,599686030622195711,599686044580839423,599686038138388479,599686043507097599,599686015589810175]
-- Simple example where the first argument is a STRING.
> SELECT h3_hexring('85283473fffffff', 1)
[8528340bfffffff,85283447fffffff,8528347bfffffff,85283463fffffff,85283477fffffff,8528340ffffffff]
-- First input is an invalid H3 cell ID.
> SELECT h3_hexring(0, 0)
[H3_INVALID_CELL_ID] 0 is not a valid H3 cell ID
-- Second input is an invalid grid distance value.
> SELECT h3_hexring('85283473fffffff', -1)
[H3_INVALID_GRID_DISTANCE_VALUE] H3 grid distance -1 must be non-negative
-- The input cell is a hexagonal cell adjacent to a pentagonal cell (the 2-ring of the hexagonal cell contains the pentagon).
> SELECT H3_HexRing('8007fffffffffff', 2)
[H3_PENTAGON_ENCOUNTERED_ERROR] A pentagon was encountered while computing the hex ring of '8007fffffffffff' with grid distance 2