适用于: Databricks SQL
Databricks Runtime 16.3 及更高版本
此函数的行为与 h3_tessellateaswkb相同,但如果函数无法生成细化,则返回 NULL
而不是错误。 它使用指定分辨率的 H3 单元格返回输入地理的 tessellation
。 分割由结构 ARRAY
表示,每个结构都表示分割的一个元素。 分割的每个元素都包含一个 H3 单元格 ID(BIGINT
)、一个布尔值,该值指示输入地理是否完全覆盖该单元格,以及 BINARY
对应于输入地理与 H3 单元格交集的 WKB 说明的值。
语法
h3_try_tessellateaswkb ( geographyExpr, resolutionExpr )
论据
geographyExpr
:一个以 WKB、WKT 或 GeoJSON 表示地理位置的BINARY
或STRING
表达式。 地理位置预计应有以度为单位的经纬度坐标,这些坐标参照 WGS84 坐标参考系统。resolutionExpr
:一个INT
表达式,其值介于0
和15
包括之间,指定 H3 单元格 ID 的分辨率。
退货
命名结构的 ARRAY
,具有三个类型为 BIGINT
、BOOLEAN
和 BINARY
的字段,分别命名为 cellid
、core
和 chip
,表示使用指定分辨率的 H3 单元格分割输入地理。
结构中的第一个字段是表示为 a BIGINT
的 H3 单元格 ID。 第二个 BOOLEAN
字段指示单元格是否为 核心单元格。 核心单元格是完全包含在输入地理位置中的单元格。 它与输入的交集是整个单元格。 该值对于核心单元格为 true;否则为 false。 第三个字段是表示地理的 WKB 说明的 BINARY
值,它是输入地理和 H3 单元格的交集。 返回的 H3 单元格共同构成输入地理数据的最小覆盖集。 对应于返回的 WKB 说明的地理区域共同构成输入地理的分割(分解)。
如果任一输入表达式为 NULL
,则函数返回 NULL
。
如果第一个输入参数的类型为BINARY
,则输入值应为点、线字符串、多边形、多点、多线字符串或多多边形的WKB说明。
如果第一个输入参数的类型是 STRING
,那么输入值应是表示点、线串、多边形、多点、多线串或多多边形的 WKT 或 GeoJSON 描述。
输入地理位置的维度可以是 2D、3DZ、3DM 或 4D。
如果第一个参数对应于无效的 WKB、WKT 或 GeoJSON,或者不表示点、线字符串、多边形、多点、多行字符串或多多边形,则函数返回 NULL
。
如果该函数无法生成分割,它将返回 NULL
。
错误条件
- 如果
resolutionExpr
小于0
或大于15
,则该函数返回 H3_INVALID_RESOLUTION_VALUE。
例子
> 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)
null
-- Feeding an invalid WKB (invalid endianness value)
> SELECT h3_tessellateaswkb(unhex('020700000000'), 2)
null
-- 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)
null
-- 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