Partilhar via


geo_polygon_to_h3cells()

Converte o polígono em células H3. Esta função é uma ferramenta de associação e visualização geoespacial útil.

Syntax

geo_polygon_to_h3cells(polígono [,resolução[,raio]])

Saiba mais sobre as convenções de sintaxe.

Parâmetros

Nome Tipo Necessário Descrição
polígono dynamic ✔️ Polígono ou multipólgono no formato GeoJSON.
resolução int Define a resolução de células pedida. Os valores suportados estão no intervalo [0, 15]. Se não for especificado, é utilizado o valor 6 predefinido.
raio real Raio da memória intermédia em metros. Se não for especificado, é utilizado o valor 0 predefinido.

Devoluções

Matriz de cadeias de tokens de célula H3 da mesma resolução que repõem um polígono ou um multipólgono. Se radius estiver definido como um valor positivo, o polígono será aumentado de modo a que todos os pontos dentro do raio especificado do polígono de entrada ou multipolygon sejam contidos no interior e o polígono recém-calculado que será convertido em células H3. Se polígono, resolução, raio for inválido ou a contagem de células exceder o limite, a consulta produzirá um resultado nulo.

Nota

  • A conversão de tokens de células de polígonos em H3 pode ser útil para combinar coordenadas com polígonos que podem incluir estas coordenadas e polígonos correspondentes a polígonos.
  • A contagem máxima de tokens por polígono é 61680.
  • As margens do polígono são linhas retas.
  • Um polígono é representado pelas células cujos centroides estão dentro do polígono. Isto significa que as células não são exatamente as mesmas que o polígono, mas aproximam-se à medida que a resolução aumenta. Para se certificar de que cada ponto no polígono está coberto por uma célula, o polígono pode ser colocado em memória intermédia. Isto também garante que os polígonos vizinhos que se tocam terão células separadas, pelo que nenhuma célula pertencerá a mais do que um polígono.

Seel também geo_polygon_to_s2cells().

Exemplos

O exemplo seguinte calcula as 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","86390cb07ffff","86390ca2fffffff","86390ca37ffffff","86390cb17ffffff","86390cb1fffffff","86390cb8fffffff","86390cba7ffffff","86390ca07ffffff","86390cbafffff"]

O exemplo seguinte demonstra um multipolygon que consiste em células H3 que se aproximam do polígono acima. Especificar uma resolução mais alta irá 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

multipólgono
{"type": "MultiPolygon",
"coordenadas": [ ... ]}

O exemplo seguinte devolve 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
Verdadeiro