Sdílet prostřednictvím


geo_polygon_to_h3cells()

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

Syntax

geo_polygon_to_h3cells(polygon [,rozlišení[,radius]])

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

Parametry

Název Typ Vyžadováno Popis
Mnohoúhelník dynamic ✔️ Mnohoúhelník nebo multipolygon ve formátu GeoJSON.
Rozlišení int Definuje požadované rozlišení buňky. Podporované hodnoty jsou v rozsahu [0, 15]. Pokud není zadáno, použije se výchozí hodnota 6 .
Radius 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ů tokenu buňky H3 stejného rozlišení, které předestavují mnohoúhelník nebo multipolygon. Pokud je poloměr nastaven na kladnou hodnotu, zvětší se mnohoúhelník 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 tyto souřadnice obsahovat a porovnávat mnohoúhelníky s mnohoúhelníky.
  • Maximální počet tokenů na mnohoúhelník je 61680.
  • Mnohoúhelníky jsou rovné čáry.
  • Mnohoúhelník je reprezentován buňkami, jejichž centroidy jsou uvnitř mnohoúhelníku. To znamená, že buňky nejsou přesně stejné jako mnohoúhelník, ale s rostoucím rozlišením se přibližují. Chcete-li zajistit, aby každý bod mnohoúhelníku byl pokryt buňkou, může být mnohoúhelník uložen do vyrovnávací paměti. Tím se také zajistí, že sousední mnohoúhelníky, které se vzájemně dotknou, 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é aproximují mnohoúhelník.

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
["86390cb57ffffff","86390cb0fffffff","86390ca27ffffff","86390cb87ffffff","86390cb07ffffff","86390ca2fffffff","86390ca37ffffff","86390cb17ffffff","86390cb1fffffffff","86390cb8fffffff","86390cba7ffffff","86390ca07ffffff","86390cbafffffffff"]

Následující příklad ukazuje multipolygon, který se skládá z buněk H3, které aproximuje výše uvedený mnohoúhelník. Specifikování 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
Ano