Partilhar via


Função h3_tessellateaswkb

Aplica-se a: Marque Sim Databricks SQL Marque Sim Databricks Runtime 14.2 e superior

Retorna uma tesselação da geografia de entrada usando células H3 na resolução especificada. A tesselação é representada por uma MATRIZ de estruturas, cada uma representando um elemento da tesselação. Cada elemento da tesselação consiste em um ID de célula H3 (representado como um inteiro longo), um valor booleano indicando se a geografia de entrada cobre totalmente a célula e um valor BINÁRIO correspondente à descrição WKB da interseção da geografia de entrada com a célula H3.

As células H3 retornadas formam coletivamente um conjunto mínimo de hexágonos ou pentágonos, na resolução especificada, que cobrem totalmente a geografia de entrada. As geografias retornadas (através de suas representações WKB ) formam uma tesselação da geografia de entrada.

Sintaxe

h3_tessellateaswkb ( geographyExpr, resolutionExpr )

Argumentos

  • geographyExpr: Uma expressão BINARY ou STRING que representa uma geografia em WKB, WKT ou GeoJSON. Espera-se que a geografia tenha coordenadas de longitude e latitude em graus que se referem ao sistema de referência de coordenadas WGS84 .
  • resolutionExpr: Uma expressão INT, com um valor entre 0 e 15 inclusivo, especificando a resolução para os IDs de célula H3.

Devoluções

Uma MATRIZ de estruturas nomeadas com três campos do tipo BIGINT, BOOLEAN, e BINARY, denominados cellid, coree chip, respectivamente, representando a tesselação da geografia de entrada com células H3 na resolução especificada.

O primeiro campo na struct é um ID de célula H3 (representado como um inteiro longo). O segundo campo na struct é um valor booleano que indica se a célula H3 é uma célula central, caso em que o valor do campo é true ou não, caso em que o valor do campo é false. Uma célula central é uma célula H3 que é totalmente coberta pela geografia de entrada (ou seja, sua interseção com a geografia de entrada é a própria célula). O terceiro campo é um valor BINÁRIO que representa a descrição WKB da geografia que é a interseção da geografia de entrada e da célula H3. As células H3 retornadas formam coletivamente um conjunto de cobertura mínimo da geografia de entrada. As geografias, correspondentes às descrições WKB retornadas, formam coletivamente uma tesselação (decomposição) da geografia de entrada.

A função retorna NULL se qualquer uma das expressões de entrada for NULL. Se o primeiro argumento de entrada for do tipo BINARY, espera-se que o valor de entrada seja a descrição WKB de um ponto, linestring, polygon, multipoint, multilinestring ou multipolygon. Se o primeiro argumento de entrada for do tipo STRING, espera-se que o valor de entrada seja o WKT ou a descrição GeoJSON de um ponto, linestring, polygon, multipoint, multilinestring ou multipolygon. A dimensão da geografia de entrada pode ser 2D, 3DZ, 3DM ou 4D.

Condições de erro

  • Se geographyExpr for do tipo BINARY e o valor for um WKB inválido ou representar uma coleção de geometria, a função retornará WKB_PARSE_ERROR.
  • Se geographyExpr for do tipo STRING e o valor for um WKT inválido ou representar uma coleção de geometria, a função retornará WKT_PARSE_ERROR.
  • Se geographyExpr for do tipo STRING e o valor for um GeoJSON inválido ou representar uma coleção de geometria, a função retornará GEOJSON_PARSE_ERROR.
  • Se resolutionExpr for menor 0 ou maior que 15, a função retornará H3_INVALID_RESOLUTION_VALUE.

Exemplos

> 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