geo_polygon_to_h3cells()

Converte polígono em células H3. Essa função é uma ferramenta útil de junção e visualização geoespaciais.

Syntax

geo_polygon_to_h3cells(polígono [,resolution[,radius]])

Saiba mais sobre as convenções de sintaxe.

Parâmetros

Nome Tipo Obrigatório Descrição
Polígono dynamic ✔️ Polígono ou multipolígono no formato GeoJSON.
Resolução int Define a resolução de célula solicitada. Os valores com suporte estão no intervalo [0, 15]. Se não for especificado, o valor padrão 6 será usado.
Raio real Raio de buffer em metros. Se não for especificado, o valor padrão 0 será usado.

Retornos

Matriz de cadeias de caracteres de token de célula H3 da mesma resolução que represetam um polígono ou um multipolígono. Se radius for definido como um valor positivo, o polígono será ampliado de modo que todos os pontos dentro do raio especificado do polígono de entrada ou multipolipgono serão contidos dentro e o polígono recém-calculado que será convertido em células H3. Se polígono, resolução, raio forem inválidos ou a contagem de células exceder o limite, a consulta produzirá um resultado nulo.

Observação

  • Converter polígono em tokens de célula H3 pode ser útil em coordenadas correspondentes a polígonos que podem incluir essas coordenadas e polígonos correspondentes a polígonos.
  • A contagem máxima de tokens por polígono é 61680.
  • Bordas de polígono são linhas retas.
  • Um polígono é representado pelas células cujos centroides estão dentro do polígono. Isso significa que as células não são exatamente iguais ao polígono, mas se aproximam à medida que a resolução aumenta. Para garantir que cada ponto no polígono seja coberto por uma célula, o polígono pode ser armazenado em buffer. Isso também garante que polígonos vizinhos que se tocam terão células separadas, portanto, nenhuma célula pertencerá a mais de um polígono.

Seel também geo_polygon_to_s2cells().

Exemplos

O exemplo a seguir calcula células H3 que se aproximam do polígono.

let polygon = dynamic({"type":"Polygon","coordinates":[[[-3.659,40.553],[-3.913,40.409],[-3.729,40.273],[-3.524,40.440],[-3.659,40.553]]]});
print h3_cells = geo_polygon_to_h3cells(polygon)

Saída

h3_cells
["86390cb57ffffff","86390cb0fffffff","86390ca27ffffff","86390cb87ffffff","86390cb07ffffff","86390ca2fffffff","86390ca37ffffff","86390cb17ffff","86390cb1fffffff","86390cb8fffffff","86390cba7ffffff","86390ca07ffffff","86390cbafffffff"]

O exemplo a seguir demonstra um multipolígono que consiste em células H3 que se aproximam do polígono acima. Especificar uma resolução mais alta melhorará a aproximação do polígono.

let polygon = dynamic({"type":"Polygon","coordinates":[[[-3.659,40.553],[-3.913,40.409],[-3.729,40.273],[-3.524,40.440],[-3.659,40.553]]]});
print h3_cells = geo_polygon_to_h3cells(polygon)
| mv-expand cell = h3_cells to typeof(string) // extract cell to a separate row
| project polygon_cell = geo_h3cell_to_polygon(cell) // convert each cell to a polygon
| project individual_polygon_coordinates = pack_array(polygon_cell.coordinates)
| summarize multipolygon_coordinates = make_list(individual_polygon_coordinates)
| project multipolygon = bag_pack("type","MultiPolygon", "coordinates", multipolygon_coordinates)

Saída

Multipolygon
{"type": "MultiPolygon",
"coordenadas": [ ... ]}

O exemplo a seguir retorna nulo porque o polígono é inválido.

let polygon = dynamic({"type":"Polygon","coordinates":[[[0,0],[1,1]]]});
print is_null = isnull(geo_polygon_to_h3cells(polygon))

Saída

Is_null
True