h3_try_tessellateaswkb 函数

适用于:已选中“是” 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 表示地理位置的 BINARYSTRING 表达式。 地理位置预计应有以度为单位的经纬度坐标,这些坐标参照 WGS84 坐标参考系统。
  • resolutionExpr:一个 INT 表达式,其值介于 015 包括之间,指定 H3 单元格 ID 的分辨率。

退货

命名结构的 ARRAY,具有三个类型为 BIGINTBOOLEANBINARY 的字段,分别命名为 cellidcorechip,表示使用指定分辨率的 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

错误条件

例子

> 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