geo_polygon_to_h3cells()
Aplica-se a: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Converte polígono em células H3. Essa função é uma ferramenta útil de junção e visualização geoespacial.
Sintaxe
geo_polygon_to_h3cells(
polígono [ ,
resolução [,
raio]])
Saiba mais sobre as convenções de sintaxe.
Parâmetros
Nome | Digitar | Obrigatória | Descrição |
---|---|---|---|
polígono | dynamic |
✔️ | Polígono ou multipolígono no formato GeoJSON. |
resolução | int |
Define a resolução da célula solicitada. Os valores suportados estão no intervalo [0, 15]. Se não for especificado, o valor padrão 6 será usado. |
|
raio | real |
Raio do buffer em metros. Se não for especificado, o valor padrão 0 será usado. |
Devoluções
Matriz de cadeias de caracteres de token de célula H3 da mesma resolução que redefinem um polígono ou um multipolígono. Se o raio for definido como um valor positivo, o polígono será ampliado de modo que todos os pontos dentro do raio fornecido do polígono ou multipolígono de entrada estejam contidos dentro e o polígono recém-calculado será convertido em células H3. Se polygon, resolution, radius for inválido ou a contagem de células exceder o limite, a consulta produzirá um resultado nulo.
Observação
- A conversão de tokens de célula de polígono em H3 pode ser útil para corresponder coordenadas a polígonos que podem incluir essas coordenadas e combinar polígonos a polígonos.
- A contagem máxima de tokens por polígono é 61680.
- As arestas do polígono são linhas retas.
- Um polígono é representado pelas células cujos centróides 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 os polígonos vizinhos que se tocam tenham 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 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","86390cb07ffffff","86390ca2fffffff","86390ca37ffffff","86390cb17ffffff","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
multipolígono |
---|
{"tipo": "MultiPolygon", "coordenadas": [ ... ]} |
O exemplo a seguir retorna null 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 |