Compartilhar via


Função h3_tessellateaswkb

Aplica-se a:verificação marcada como sim Databricks SQL verificação marcada como sim Databricks Runtime 14.2 e superior

Retorna um mosaico da geografia de entrada usando células H3 na resolução especificada. O mosaico é representado por um ARRAY de estruturas, cada uma representando um elemento do mosaico. Cada elemento do mosaico consiste em um ID de célula H3 (representado como um número inteiro longo), um valor booleano que indica 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 o 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 (por meio de suas representações WKB) formam um mosaico 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 do tipo INT, com um valor entre 0 e 15, inclusive, especificando a resolução para as IDs de células H3.

Retornos

Um ARRAY de estruturas nomeadas com três campos do tipo BIGINT, BOOLEAN e BINARY, denominados cellid, core, e chip, respectivamente, representando o mosaico da geografia de entrada com células H3 na resolução especificada.

O primeiro campo na estrutura é um ID de célula H3 (representado como um número inteiro longo). O segundo campo na estrutura é um valor booleano que indica se a célula H3 é uma célula central; nesse caso, o valor do campo é true ou não; nesse caso, o valor do campo é false. Uma célula central é uma célula H3 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 intersecção da geografia de entrada e a célula H3. As células H3 retornadas formam coletivamente um conjunto mínimo de cobertura da geografia de entrada. As geografias, correspondentes às descrições WKB retornadas, formam coletivamente uma mosaico (decomposição) da geografia de entrada.

A função retorna NULL se alguma 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, cadeia de linhas, polígono, multiponto, cadeia de linhas múltiplas ou multipolígono. Se o primeiro argumento de entrada for do tipo STRING, espera-se que o valor de entrada seja a descrição WKT ou GeoJSON de um ponto, cadeia de linhas, polígono, multiponto, cadeia de linhas múltiplas ou multipolígono. 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 retorna 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