Sdílet prostřednictvím


geo_polygon_to_h3cells()

Platí pro: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft Sentinel

Převede mnohoúhelník na buňky H3. Tato funkce je užitečný geoprostorový spoj a vizualizační nástroj.

Syntaxe

geo_polygon_to_h3cells(mnohoúhelník [, rozlišení[, poloměr]])

Přečtěte si další informace o konvencích syntaxe.

Parametry

Název Type Požadováno Popis
mnohoúhelník dynamic ✔️ Mnohoúhelník nebo multipolygon ve formátu GeoJSON.
usnesení int Definuje požadované rozlišení buněk. Podporované hodnoty jsou v rozsahu [0, 15]. Pokud není zadáno, použije se výchozí hodnota 6 .
poloměr real Poloměr vyrovnávací paměti v metrech. Pokud není zadáno, použije se výchozí hodnota 0 .

Návraty

Pole řetězců tokenů buňky H3 stejného rozlišení, které přestavují mnohoúhelník nebo multipolygon. Pokud je poloměr nastaven na kladnou hodnotu, polygon se zvětší tak, aby všechny body v daném poloměru vstupního mnohoúhelníku nebo multipolygonu byly obsaženy uvnitř a nově vypočítaný mnohoúhelník, který bude převeden na buňky H3. Pokud je mnohoúhelník, rozlišení, poloměr neplatný nebo počet buněk překročí limit, dotaz vytvoří výsledek null.

Poznámka:

  • Převod mnohoúhelníku na tokeny buněk H3 může být užitečný při porovnávání souřadnic s mnohoúhelníky, které mohou zahrnovat tyto souřadnice a odpovídající mnohoúhelníky s mnohoúhelníky.
  • Maximální počet tokenů na mnohoúhelník je 61680.
  • Polygonové hrany jsou rovné čáry.
  • Mnohoúhelník je reprezentován buňkami, jejichž centroidy jsou uvnitř mnohoúhelníku. To znamená, že buňky nejsou úplně stejné jako mnohoúhelník, ale při nárůstu rozlišení se přibližují. Aby se zajistilo, že každý bod mnohoúhelníku je pokryt buňkou, může být mnohoúhelník uložen do vyrovnávací paměti. To také zajišťuje, že sousední mnohoúhelníky, které se navzájem dotýká, budou mít samostatné buňky, takže žádná buňka nebude patřit do více než jednoho mnohoúhelníku.

Seel také geo_polygon_to_s2cells().

Příklady

Následující příklad vypočítá buňky H3, které se blíží mnohoúhelníku.

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)

Výstup

h3_cells
["86390cb57ffff","86390cb0fffff","86390ca27ffff","86390cb87ffffff","86390cb07ffff","86390ca2fffff","863900ca37ffff","86390cb17ffff","86390cb1fffffff","86390cb8fffff","86390cba7ffffff","86390ca07ffffff","86390cbafffffff"]

Následující příklad ukazuje multipolygon, který se skládá z buněk H3, které se blíží výše uvedenému mnohoúhelníku. Specifikace vyššího rozlišení zlepší aproximaci mnohoúhelníku.

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)

Výstup

multipolygon
{"type": "MultiPolygon",
"souřadnice": [ ... ]}

Následující příklad vrátí hodnotu null, protože mnohoúhelník je neplatný.

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

Výstup

is_null
Pravda