h3_try_distance 函数

适用于:勾选“是” Databricks SQL 勾选“是” Databricks Runtime 13.3 LTS 及更高版本

此函数的行为与h3_distance类似,但如果未定义同一分辨率的两个输入 H3 单元格 ID 之间的网格距离,则返回 NULL 而不是错误。 具体而言,它返回两个输入 H3 单元格 ID 的网格距离,这些 ID 应为相同的分辨率;如果未定义距离,则返回 NULL。

语法

h3_try_distance ( h3CellId1Expr, h3CellId2Expr )

参数

  • h3CellId1Expr:表示 H3 单元格 ID 的 BIGINT 表达式或十六进制 STRING 表达式。
  • h3CellId2Expr:表示 H3 单元格 ID 的 BIGINT 表达式或十六进制 STRING 表达式。

返回

BIGINT 值,表示应具有相同分辨率的两个输入 H3 单元格的网格距离,或者如果未定义距离,则为 NULL。

如果任一输入表达式为 NULL,则该函数会返回 NULL。 它部分验证输入参数以确定它们是否表示有效的 H3 单元格 ID。 有效 H3 ID 的必要不充分条件是其值介于0x08001fffffffffff0x08ff3b6db6db6db6之间。 如果两个输入单元格 ID 中有任何一个不是有效的单元格 ID,则表示该函数的行为未定义。

错误条件

  • 如果 h3CellId1Exprh3CellId2Expr 是无法转换为 BIGINT 的 STRING 或对应于小于 0x08001fffffffffff 或大于 0x08ff3b6db6db6db6 的 BIGINT 值,则该函数返回 H3_INVALID_CELL_ID
  • 如果两个输入 H3 单元格的分辨率不同,函数会返回H3_UNDEFINED_GRID_DISTANCE
  • 如果未定义同一分辨率的两个 H3 单元格之间的网格距离,该函数返回 NULL。 出于以下任何原因,可能没有定义网格距离:
    • 两个输入 H3 单元格中有任何一个是五边形单元格。
    • 两个 H3 单元格由一个五边形单元格隔开。
    • 两个 H3 单元格彼此相距太远。

示例

-- Example where the two arguments are BIGINTs representing H3 cells.
> SELECT h3_distance(599686030622195711, 599686015589810175);
 2

-- Example where the two arguments are hexadecimal STRINGs representing H3 cells.
> SELECT h3_distance('85283447fffffff', '8528340ffffffff')
 2

-- Example of two cells that too far apart from each other.
> SELECT h3_distance(h3_longlatash3(-120, 45, 13), h3_longlatash3(120, 45, 13))
 NULL

-- Example of two cells with different resolutions.
> SELECT h3_distance(h3_longlatash3(120, 45, 13), h3_longlatash3(120, 45, 12));
  [H3_UNDEFINED_GRID_DISTANCE] H3 grid distance between 635869868887430591 and 631366269260060159 is undefined

-- First cell ID is a pentagon.
> SELECT h3_distance(590112357393367039, 590678880759578623)
 NULL

-- Distance between two hexagons separated by a pentagon.
> SELECT h3_distance(590112494832320511, 590112632271273983)
 NULL