Partilhar via


Função h3_kringdistances

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

Retorna todas as células H3 (representadas como inteiros longos ou cadeias de caracteres) dentro da distância k da grade da célula H3 de origem, juntamente com sua distância da célula H3 de origem.

Sintaxe

h3_kringdistances ( h3CellIdExpr, kExpr )

Argumentos

  • h3CellIdExpr: Uma expressão BIGINT ou uma expressão STRING hexadecimal que representa um ID de célula H3.
  • kExpr: Uma expressão inteira que representa a distância da grade. kExpr deve ser não-negativo.

Devoluções

Uma MATRIZ de estruturas nomeadas com dois campos, nomeados cellid e distance, respectivamente, onde o primeiro campo na estrutura é um ID de célula H3 (representado como um inteiro longo ou string) e o segundo campo na estrutura é sua distância da célula H3 de origem (representada como um inteiro). O tipo para os IDs de célula H3 na saída é o mesmo que o tipo de h3CellIdExpr.

Os elementos no ARRAY retornado são classificados em relação à sua distância da célula H3 de origem. Os elementos correspondentes à mesma distância no ARRAY retornado podem ser retornados em qualquer ordem. A função retorna NULL se qualquer uma das expressões de entrada for NULL. A função faz validação parcial em relação a se o argumento de entrada é um ID de célula H3 válido. Uma condição necessária, mas não suficiente, para um ID H3 válido é que seu valor esteja entre 0x08001fffffffffff e 0x08ff3b6db6db6db6. O comportamento da função é indefinido se o ID da célula de entrada não for um ID de célula válido. Se o valor da distância da grade for zero, a matriz retornada conterá um único valor igual ao ID da célula H3 de entrada.

Condições de erro

  • Se h3CellIdExpr for uma STRING que não pode ser convertida em um BIGINT ou corresponder a um valor BIGINT menor 0x08001fffffffffff ou maior que 0x08ff3b6db6db6db6, a função retornará H3_INVALID_CELL_ID
  • Se kExpr for negativo, a função retornará H3_INVALID_GRID_DISTANCE_VALUE

Exemplos

-- Simple example where the first argument is a BIGINT.
> SELECT h3_kringdistances(599686042433355775, 1)
  [{"cellid":599686042433355775,"distance":0},{"cellid":599686030622195711,"distance":1},{"cellid":599686044580839423,"distance":1},{"cellid":599686038138388479,"distance":1},{"cellid":599686043507097599,"distance":1},{"cellid":599686015589810175,"distance":1},{"cellid":599686014516068351,"distance":1}]

-- Simple example where the first argument is a STRING.
> SELECT h3_kringdistances('85283473fffffff', 1)
  [{"cellid":"85283473fffffff","distance":0},{"cellid":"85283447fffffff","distance":1},{"cellid":"8528347bfffffff","distance":1},{"cellid":"85283463fffffff","distance":1},{"cellid":"85283477fffffff","distance":1},{"cellid":"8528340ffffffff","distance":1},{"cellid":"8528340bfffffff","distance":1}]

-- First input is an invalid H3 cell ID.
> SELECT h3_kringdistances(0, 0)
  [H3_INVALID_CELL_ID] 0 is not a valid H3 cell ID

-- Second input is an invalid grid distance value.
> SELECT h3_kringdistances('85283473fffffff', -1)
  [H3_INVALID_GRID_DISTANCE_VALUE] H3 grid distance -1 must be non-negative