h3_kringdistances
函式
適用於: Databricks SQL Databricks Runtime 11.3 LTS 和更新版本
傳回與原 H3 單元格的網格線距離 k
內的所有 H3 單元格(以長整數或字串表示),以及其與原 H3 單元格的距離。
語法
h3_kringdistances ( h3CellIdExpr, kExpr )
引數
h3CellIdExpr
:BIGINT 運算式,或代表 H3 單元格標識符的十六進位 STRING 運算式。kExpr
:代表網格線距離的 INTEGER 運算式。kExpr
必須是非負數。
傳回
名為 和distance
的具名結構陣列,分別具有兩個字段cellid
,其中結構中的第一個字段是 H3 單元格標識符(以長整數或字串表示),而結構中的第二個字段是與原 H3 單元格(以整數表示)的距離。 輸出中 H3 儲存格識別碼的類型與 的類型 h3CellIdExpr
相同。
傳回之ARRAY中的元素會根據其與原始H3單元格的距離排序。 對應至所傳回ARRAY中相同距離的專案可以依任何順序傳回。
如果任一輸入表達式為 NULL,此函式會傳回 NULL。
函式會針對輸入自變數是否為有效的 H3 單元格標識碼執行部分驗證。 有效 H3 識別符的必要條件,但沒有足夠的條件是其值介於和0x08ff3b6db6db6db6
之間0x08001fffffffffff
。
如果輸入儲存格標識碼不是有效的儲存格標識碼,則函式的行為是未定義的。
如果方格距離的值為零,傳回的陣列會包含等於輸入 H3 單元格標識碼的單一值。
錯誤條件
- 如果
h3CellIdExpr
是無法轉換成 BIGINT 的 STRING,或對應至小於0x08001fffffffffff
或大於0x08ff3b6db6db6db6
的 BIGINT 值,則函式會傳 回H3_INVALID_CELL_ID - 如果
kExpr
為負數,則函式會傳 回H3_INVALID_GRID_DISTANCE_VALUE
範例
-- Simple example where the first argument is a BIGINT.
> SELECT h3_kringdistances(599686042433355775, 1)
[{"cellid":599686042433355775,"distance":0},{"cellid":599686030622195711,"distance":1},{"cellid":599686044580839423,"distance":1},{"cellid":599686038138388479,"distance":1},{"cellid":599686043507097599,"distance":1},{"cellid":599686015589810175,"distance":1},{"cellid":599686014516068351,"distance":1}]
-- Simple example where the first argument is a STRING.
> SELECT h3_kringdistances('85283473fffffff', 1)
[{"cellid":"85283473fffffff","distance":0},{"cellid":"85283447fffffff","distance":1},{"cellid":"8528347bfffffff","distance":1},{"cellid":"85283463fffffff","distance":1},{"cellid":"85283477fffffff","distance":1},{"cellid":"8528340ffffffff","distance":1},{"cellid":"8528340bfffffff","distance":1}]
-- First input is an invalid H3 cell ID.
> SELECT h3_kringdistances(0, 0)
[H3_INVALID_CELL_ID] 0 is not a valid H3 cell ID
-- Second input is an invalid grid distance value.
> SELECT h3_kringdistances('85283473fffffff', -1)
[H3_INVALID_GRID_DISTANCE_VALUE] H3 grid distance -1 must be non-negative