Share via


h3_try_distance 関数

適用対象:check marked yes Databricks SQL Databricks Runtime 13.3 LTS 以降

この関数は h3_distance と同様に動作しますが、同じ解像度の 2 つの入力 H3 セル ID 間のグリッド距離が未定義の場合は、エラーではなく NULL が返されます。 具体的には、同じ解像度であると期待される場合は、2 つの入力 H3 セル ID のグリッド距離を返し、距離が未定義の場合は NULL を返します。

構文

h3_try_distance ( h3CellId1Expr, h3CellId2Expr )

引数

  • h3CellId1Expr: H3 セル ID を表す BIGINT 式または 16 進数の STRING 式。
  • h3CellId2Expr: H3 セル ID を表す BIGINT 式または 16 進数の STRING 式。

返品

同じ解像度を持つと期待される 2 つの入力 H3 セルのグリッド距離である BIGINT 値、または距離が未定義の場合は NULL。

いずれかの入力式が NULL の場合、この関数は NULL を返します。 入力引数を部分的に検証して、有効な H3 セル ID を表しているかどうかを判断します。 有効な H3 ID の必要条件 (ただし、十分条件ではない) は、その値が 0x08001fffffffffff0x08ff3b6db6db6db6 の間にあることです。 2 つの入力セル ID のいずれかが有効なセル ID でない場合、関数の動作は未定義です。

エラー条件

  • h3CellId1Expr または h3CellId2Expr が BIGINT に変換できない STRING の場合、または、0x08001fffffffffff より小さいか 0x08ff3b6db6db6db6 より大きい BIGINT 値に対応する STRING の場合、関数は H3_INVALID_CELL_ID を返します。
  • 2 つの入力 H3 セルの解像度が異なる場合、関数は H3_UNDEFINED_GRID_DISTANCE を返します。
  • 同じ解像度の 2 つの H3 セル間のグリッド距離が未定義の場合、関数は NULL を返します。 グリッド距離は、次のいずれかの理由で未定義にすることができます。
    • 2 つの入力 H3 セルのいずれか 1 つが五角形セルである。
    • 2 つの H3 セルが五角形セルによって分離される。
    • 2 つの 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