共用方式為


geo_polygon_buffer()

適用於:✅Microsoft網狀架構Azure 數據✅總管 Azure 監視器✅Microsoft Sentinel

計算多邊形或多面形,其中包含地球上輸入多邊形或多多邊形指定半徑內的所有點。

語法

geo_polygon_buffer(多邊形,半徑,容錯)

深入瞭解 語法慣例

參數

姓名 類型​​ 必要 描述
多邊形 dynamic ✔️ GeoJSON 格式多邊形或多多邊形。
半徑 real ✔️ 以公尺為單位的緩衝區半徑。 有效值必須是正數。
tolerance real 定義以公尺為單位的容錯,以決定多邊形可以偏離理想半徑多少。 如果未指定,則會使用預設值 10 。 容錯應不低於半徑的0.0001%。 指定大於半徑的容錯,會將容錯降低到半徑下方的最大可能值。

傳回

在輸入 Polygon 或 multipolygon 周圍的多邊形或 MultiPolygon。 如果座標或半徑或容錯無效,查詢將會產生 Null 結果。

注意

多邊形定義和條件約束

dynamic({“type”: “Polygon”,“coordinates”: [LinearRingShell, LinearRingHole_1, ..., LinearRingHole_N]})

dynamic({“type”: “MultiPolygon”,“coordinates”: [[LinearRingShell, LinearRingHole_1, ..., LinearRingHole_N], ..., [LinearRingShell, LinearRingHole_1, ..., LinearRingHole_M]})

  • LinearRingShell 是必要的,並定義為 counterclockwise 已排序的座標數位列 [[lng_1,lat_1], ..., [lng_i,lat_i], ...,[lng_j,lat_j], ...,[lng_1,lat_1]]。 只能有一個殼層。
  • LinearRingHole 是選擇性的,並定義為 clockwise 已排序的座標數位列 [[lng_1,lat_1], ...,[lng_i,lat_i], ...,[lng_j,lat_j], ...,[lng_1,lat_1]]。 可以有任意數量的內環和孔。
  • 線性Ring 頂點必須與至少三個座標相異。 第一個座標必須等於最後一個座標。 至少需要四個專案。
  • 座標 [經度, 緯度] 必須有效。 經度必須是範圍 [-180, +180] 中的實數,而緯度必須是範圍 [-90, +90] 中的實數。
  • LinearRingShell 會括住球體的大部分部分。 LinearRing 會將球體分成兩個區域。 將會選擇這兩個區域中的較小數目。
  • LinearRing 邊緣長度必須小於 180 度。 將選擇兩個頂點之間的最短邊緣。
  • LinearRings 不得交叉且不得共享邊緣。 LinearRings 可能會共享頂點。
  • 多邊形包含其頂點。

範例

下列查詢會計算輸入多邊形周圍的多邊形,半徑為10公里。

let polygon = dynamic({"type":"Polygon","coordinates":[[[139.813757,35.719666],[139.72558,35.71813],[139.727471,35.653231],[139.818721,35.657264],[139.813757,35.719666]]]});
print buffer = geo_polygon_buffer(polygon, 10000)
緩衝區
{“type”: “Polygon”,“coordinates”: [ ... ]}

下列查詢會計算每個多邊形周圍的緩衝區,並統一結果

datatable(polygon:dynamic, radius:real )
[
    dynamic({"type":"Polygon","coordinates":[[[12.451218693639277,41.906457003556625],[12.445753852969375,41.90160968881543],[12.453514425793855,41.90361551885886],[12.451218693639277,41.906457003556625]]]}), 100,
    dynamic({"type":"Polygon","coordinates":[[[12.4566086734784,41.905119850039995],[12.453913683559591,41.903652663265234],[12.455485761012113,41.90146110630562],[12.4566086734784,41.905119850039995]]]}), 20
]
| project buffer = geo_polygon_buffer(polygon, radius)
| summarize polygons = make_list(buffer)
| project result = geo_union_polygons_array(polygons)
result
{“type”: “Polygon”,“coordinates”: [ ... ]}

下列範例會傳回 true,因為多邊形無效。

print buffer = isnull(geo_polygon_buffer(dynamic({"type":"p"}), 1))
緩衝區
True

下列範例會傳回 true,因為半徑無效。

print buffer = isnull(geo_polygon_buffer(dynamic({"type":"Polygon","coordinates":[[[10,10],[0,10],[0,0],[10,10]]]}), 0))
緩衝區
True