geo_polygon_to_h3cells()
Platí pro: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft 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 |