geo_polygon_to_h3cells ()

將多邊形轉換成 H3 單元格。 此函式是實用的地理空間聯結和視覺效果工具。

Syntax

geo_polygon_to_h3cells(多邊形 [resolution[,,radius]])

深入瞭解 語法慣例

參數

名稱 類型 必要 Description
多邊形 dynamic ✔️ GeoJSON 格式的多邊形或多多邊形。
resolution int 定義要求的儲存格解析。 支援範圍 [0, 15] 中的值。 如果未指定,則會使用預設值 6
半徑 real 以公尺為單位的緩衝區半徑。 如果未指定,則會使用預設值 0

傳回

相同解析度的 H3 單元格標記字串陣列,該字串會重新設定多邊形或多多邊形。 如果radius設定為正值,則會放大多邊形,讓輸入多邊形或多多邊形的指定半徑內的所有點都包含在內,以及將轉換成H3單元格之新計算的多邊形。 如果多邊形、解析度、半徑無效,或單元格計數超過限制,則查詢會產生 Null 結果。

注意

  • 將多邊形轉換為 H3 數據格標記在比對座標與多邊形時很有用,其中可能包含這些座標,並將多邊形比對成多邊形。
  • 每個多邊形的令牌計數上限為 61680。
  • 多邊形邊緣是直線。
  • 多邊形是由位於多邊形內部的單元格表示。 這表示單元格與多邊形不完全相同,但隨著解析度增加而更接近。 若要確定多邊形中的每個點都由單元格所涵蓋,多邊形可以緩衝處理。 這也可確保彼此觸控的鄰近多邊形會有個別的單元格,因此沒有任何單元格屬於多個多邊形。

另請參閱l 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
[“86390cb57ffffff”,“86390cb0fff”,“86390ca27ff”,“86390cb87ff”,“86390cb07ffffff”,“86390ca2fff”,“86390ca37ffffff”,“86390cb17ffffff”,“86390cb1fff”,“86390cb8fff”,“86390cba7ff”,“86390ca07ffffff”,“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