geo_polygon_to_h3cells()
適用於:✅Microsoft網狀架構✅Azure 數據✅總管 Azure 監視器✅Microsoft Sentinel
將多邊形轉換成 H3 單元格。 此函式是實用的地理空間聯結和視覺效果工具。
語法
geo_polygon_to_h3cells(
多邊形 [ resolution[,
,
radius]])
深入瞭解 語法慣例。
參數
姓名 | 類型 | 必要 | 描述 |
---|---|---|---|
多邊形 | dynamic |
✔️ | GeoJSON 格式的多邊形或多多邊形。 |
解析度 | int |
定義要求的數據格解析。 支援的值在 [0, 15] 範圍內。 如果未指定,則會使用預設值 6 。 |
|
半徑 | real |
以公尺為單位的緩衝區半徑。 如果未指定,則會使用預設值 0 。 |
傳回
H3 單元格標記字串數位,其解析度與重新設定多邊形或多多邊形相同。 如果radius設定為正值,則會放大多邊形,讓輸入多邊形或多多邊形的指定半徑內的所有點都包含在內,以及將轉換成H3單元格的新計算多邊形。 如果多邊形、解析度、半徑無效,或單元格計數超過限制,則查詢會產生 Null 結果。
注意
- 將多邊形轉換成 H3 單元格標記,對於比對座標與可能包含這些座標的多邊形以及將多邊形比對多邊形很有用。
- 每個多邊形的令牌計數上限為 61680。
- 多邊形邊緣是直線。
- 多邊形是由距心位於多邊形內的單元格表示。 這表示單元格與多邊形不同,但隨著解析度的增加,它們會越來越接近。 若要確定多邊形中的每個點都由單元格所涵蓋,可以緩衝處理多邊形。 這也可確保彼此接觸的鄰近多邊形會有個別的單元格,因此沒有單元格會屬於多個多邊形。
Seel 也 geo_polygon_to_s2cells()。
範例
下列範例會計算近似多邊形的 H3 單元格。
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)
輸出
h3_cells |
---|
[“86390cb57ffffffff”,“86390cb0fff”,“86390ca27ffffff”,“86390cb87ff”,“86390cb07ff”,“86390ca2fff”,“86390ca37ffffff”,“86390cb17ff”,“86390cb1fff”,“86390cb8fff”,“86390cba7ff”,“86390ca07ff”,“86390cbafffffff”] |
下列範例示範多面形,其中包含近似上述多邊形的 H3 單元格。 指定較高的解析度可改善多邊形近似值。
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)
輸出
multipolygon |
---|
{“type”: “MultiPolygon”, “coordinates”: [ ... ]} |
下列範例會傳回 null,因為多邊形無效。
let polygon = dynamic({"type":"Polygon","coordinates":[[[0,0],[1,1]]]});
print is_null = isnull(geo_polygon_to_h3cells(polygon))
輸出
is_null |
---|
True |