适用于: Databricks SQL
Databricks Runtime 16.3 及更高版本
此函数的行为与 h3_tessellateaswkb相同,但如果函数无法生成细化,则返回 NULL
而不是错误。 它使用指定分辨率的 H3 单元格返回输入地理的分割。 分割由结构 ARRAY
表示,每个结构都表示分割的一个元素。 镶嵌的每个元素都包含一个 H3 单元格 ID(BIGINT
),一个布尔值用于指示输入地理是否完全覆盖这个单元格,以及一个对应于输入地理与 H3 单元格交集的 WKB 描述的值 BINARY
。
语法
h3_try_tessellateaswkb ( geographyExpr, resolutionExpr )
论据
geographyExpr
:表示BINARY
STRING
WKB、 WKT 或 GeoJSON 中的地理的表达式。 地理位置应具有参考 WGS84 坐标参考系的经纬度坐标(以度为单位)。resolutionExpr
:一个INT
表达式,其值介于0
和15
包括之间,指定 H3 单元格 ID 的分辨率。
退货
命名结构的 ARRAY
,具有三个类型为 BIGINT
、BOOLEAN
和 BINARY
的字段,分别命名为 cellid
、core
和 chip
,表示使用指定分辨率的 H3 单元格分割输入地理。
结构中的第一个字段是表示为 a BIGINT
的 H3 单元格 ID。 第二个 BOOLEAN
字段指示单元格是否为 核心单元格。 核心单元格是完全包含在输入地理位置中的单元格。 它与输入的交集是整个单元格。 该值对于核心单元格为 true;否则为 false。 第三个字段是一个 BINARY
值,表示作为输入地理与 H3 单元格交集的地理区域的 WKB 说明。 返回的 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