分享方式:


h3_try_distance函式

適用於: 檢查標示為是 Databricks SQL 檢查標示為是 Databricks Runtime 13.3 LTS 和更新版本

此函式的行為與 h3_distance類似,不同之處在於如果未定義相同解析度的兩個輸入 H3 單元格標識符之間的網格線距離,則會傳回 NULL,而不是錯誤。 具體來說,它會傳回兩個輸入 H3 單元格標識符的網格線距離,如果距離未定義,則為 NULL。

語法

h3_try_distance ( h3CellId1Expr, h3CellId2Expr )

引數

  • h3CellId1Expr:BIGINT 運算式,或代表 H3 單元格標識符的十六進位 STRING 運算式。
  • h3CellId2Expr:BIGINT 運算式,或代表 H3 單元格標識符的十六進位 STRING 運算式。

傳回

BIGINT 值,這是兩個輸入 H3 單元格的方格距離,如果未定義距離,則為 NULL。

如果任何輸入表達式為 NULL,函式會傳回 NULL。 它會部分驗證輸入自變數,以判斷它們是否代表有效的 H3 單元格標識碼。 有效 H3 識別符的必要條件,但還不夠,其值介於和0x08ff3b6db6db6db6之間0x08001fffffffffff。 如果兩個輸入單元格標識碼中有任何一個不是有效的數據格標識碼,則函式的行為是未定義的。

錯誤條件

  • 如果 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