h3_tessellateaswkb
函式
適用於: Databricks SQL Databricks Runtime 14.2 和更新版本
使用指定解析度的 H3 單元格,傳回輸入地理位置的鑲嵌。 鑲嵌是由結構的ARRAY表示,每個都代表鑲嵌的元素。 鑲嵌的每個元素都包含 H3 單元格標識碼(以長整數表示)、布爾值,指出輸入地理是否完全涵蓋單元格,以及對應至 輸入地理與 H3 單元格交集之 WKB 描述的 BINARY 值。
傳回的 H3 格子會以指定解析度組成一個最小的六邊形或五邊形覆蓋集,完全涵蓋輸入地理位置。 傳回的地理位置(透過其 WKB 表示法)形成輸入地理的鑲嵌。
語法
h3_tessellateaswkb ( geographyExpr, resolutionExpr )
引數
-
geographyExpr
:BINARY 或 STRING 運算式,代表 WKB、WKT 或 GeoJSON 中的地理位置。 地理位置預期會有參考 WGS84 座標參考系統的經度和緯度座標。 -
resolutionExpr
:INT 運算式,其介於 和0
內含的值15
,指定H3單元格標識碼的解析度。
傳回
具名結構的 ARRAY,其類型分別為 BIGINT、BOOLEAN 和 BINARY 的三個字段,名為 cellid
、 core
和 chip
,分別代表具有指定解析度之 H3 單元格的輸入地理鑲嵌。
結構中的第一個字段是 H3 單元格標識碼(以長整數表示)。 結構中的第二個字段是布爾值,指出H3單元格是否為核心儲存格,在此情況下,欄位的值為 ,在此情況下,欄位的值 true
為 false
。 核心儲存格是輸入地理完全涵蓋的 H3 儲存格(也就是說,其與輸入地理位置的交集是儲存格本身)。 第三個字段是 BINARY 值,代表 地理的 WKB 描述,這是輸入地理和 H3 單元格的交集。 傳回的 H3 儲存格共同構成一組最小覆蓋範圍的輸入地理單元。 對應至傳回 WKB 描述的地理位置,共同形成 輸入地理的鑲嵌 式(分解)。
如果任何輸入表示式為 NULL
,則函式會傳NULL
回 。
如果第一個輸入自變數的類型為 BINARY,則輸入值必須是 點、線條字串、多邊形、多點、多行字串或多多邊形的 WKB 描述。
如果第一個輸入自變數的類型為 STRING,則輸入值必須是 WKT 或 GeoJSON 描述的點、線條字串、多邊形、多點、多行字串或多多邊形。
輸入地理位置的維度可以是 2D、3DZ、3DM 或 4D。
錯誤條件
- 如果
geographyExpr
類型為 BINARY,且值是無效的 WKB 或表示 geometry 集合,則函式會傳回WKB_PARSE_ERROR。 - 如果
geographyExpr
類型為 STRING,且值是無效的 WKT 或表示 geometry 集合,則函式會傳回WKT_PARSE_ERROR。 - 如果
geographyExpr
類型為 STRING,且值是無效的 GeoJSON 或代表 geometry 集合,則函式會 傳回GEOJSON_PARSE_ERROR。 - 如果
resolutionExpr
小於或大於0
,則函式會15
。
範例
> SELECT h3_h3tostring(cellid), core, hex(chip) FROM (SELECT inline(h3_tessellateaswkb('MULTIPOINT(20 0,20 10,40 30)', 0))) ORDER BY 1
802dfffffffffff false 010100000000000000000044400000000000003E40
806bfffffffffff false 010400000002000000010100000000000000000034400000000000000000010100000000000000000034400000000000002440
-- Feeding an empty geometry collection in GeoJSON format (geometry collections are not supported).
> SELECT h3_tessellateaswkb('{"type":"GeometryCollection","geometries":[]}', 2)
[GEOJSON_PARSE_ERROR] Error parsing GeoJSON: Invalid or unsupported type '"GeometryCollection"' at position 9 SQLSTATE: 22023
-- Feeding an invalid WKB (invalid endianness value)
> SELECT h3_tessellateaswkb(unhex('020700000000'), 2)
[WKB_PARSE_ERROR] Error parsing WKB: Invalid byte order 2 at position 1 SQLSTATE: 22023
-- Feeding an invalid polygon in WKT (polygon is not closed)
> SELECT h3_tessellateaswkb('POLYGON((-122.4194 37.7749,-118.2437 34.0522,-74.0060 40.7128,-74.0060 40.7128))', 2)
[WKT_PARSE_ERROR] Error parsing WKT: Found non-closed ring at position 80 SQLSTATE: 22023
-- Resolution is out of range.
> SELECT h3_tessellateaswkb('POLYGON((-122.4194 37.7749,-118.2437 34.0522,-74.0060 40.7128,-122.4194 37.7749))', 16)
[H3_INVALID_RESOLUTION_VALUE] H3 resolution 16 must be between 0 and 15, inclusive SQLSTATE: 22023