geo_polygon_densify()
適用於:✅Microsoft網狀架構✅Azure 數據✅總管 Azure 監視器✅Microsoft Sentinel
藉由新增中繼點,將多邊形或多多邊形平面邊緣轉換成地理區域。
語法
geo_polygon_densify(
多邊形,
容錯,
[ preserve_crossing ])
深入瞭解 語法慣例。
參數
姓名 | 類型 | 必要 | 描述 |
---|---|---|---|
多邊形 | dynamic |
✔️ | GeoJSON 格式的多邊形或多多邊形。 |
tolerance | int、long 或 real | 定義原始平面邊緣與已轉換地理邊緣鏈結之間的公尺距離上限。 支援的值為 [0.1, 10000]。 如果未指定,則預設值為 10 。 |
|
preserve_crossing | bool |
如果 true 為 ,則會在加時里線期間保留邊緣交叉。 如果未指定,則會使用預設值 false 。 |
多邊形定義
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]]。 可以有任意數量的內環和孔。LinearRing
頂點必須與至少三個座標相異。 第一個座標必須等於最後一個座標。 至少需要四個專案。- 座標 [經度, 緯度] 必須有效。 經度必須是範圍 [-180, +180] 中的實數,而緯度必須是範圍 [-90, +90] 中的實數。
LinearRingShell
封進球體的大部分部分。 LinearRing 會將球體分成兩個區域。 將會選擇這兩個區域中的較小數目。LinearRing
邊緣長度必須小於 180 度。 將選擇兩個頂點之間的最短邊緣。
限制
- densified 多邊形中的點數上限限制為10485760。
- 以動態格式儲存多邊形具有大小限制。
- 假裝有效的多邊形可能會使多邊形失效。 演算法會以非統一的方式新增點,因此可能會導致邊緣彼此交織。
動機
- GeoJSON 格式 會將兩個點之間的邊緣定義為直線笛卡兒線,同時
geo_polygon_densify()
使用 地理座標。 - 使用地理或平面邊緣的決定可能取決於數據集,而且特別與長邊緣相關。
傳回
GeoJSON 格式和動態數據類型的 Densified 多邊形。 如果多邊形或容錯無效,查詢會產生 Null 結果。
注意
地理空間座標會解譯為 WGS-84 座標參考系統所代表。
範例
下列範例會譴責曼哈頓中央公園多邊形。 邊緣是短的,平面邊緣與其地理上的對應專案之間的距離小於容錯指定的距離。 因此,結果會保持不變。
print densified_polygon = tostring(geo_polygon_densify(dynamic({"type":"Polygon","coordinates":[[[-73.958244,40.800719],[-73.949146,40.79695],[-73.973093,40.764226],[-73.982062,40.768159],[-73.958244,40.800719]]]})))
輸出
densified_polygon |
---|
{“type”:“Polygon”,“coordinates”:[[-73.958244,40.800719],[-73.949146,40.79695],[-73.973093,40.764226],[-73.982062,40.768159],[-73.958244,40.800719]]]} |
下列範例會登錯多邊形的兩個邊緣。 Densified 邊緣長度 ~110 公里
print densified_polygon = tostring(geo_polygon_densify(dynamic({"type":"Polygon","coordinates":[[[10,10],[11,10],[11,11],[10,11],[10,10]]]})))
輸出
densified_polygon |
---|
{“type”:“Polygon”,“coordinates”:[[[10,10],[10.25,10],[10.5,10],[10.75,10],[11,10],,[11,10],[11,11],[10.75,11],[10.5,11],[10.25,11],[10,11],[10,10]]} |
下列範例會傳回 Null 結果,因為座標輸入無效。
print densified_polygon = geo_polygon_densify(dynamic({"type":"Polygon","coordinates":[[[10,900],[11,10],[11,11],[10,11],[10,10]]]}))
輸出
densified_polygon |
---|
下列範例會傳回 Null 結果,因為容錯輸入無效。
print densified_polygon = geo_polygon_densify(dynamic({"type":"Polygon","coordinates":[[[10,10],[11,10],[11,11],[10,11],[10,10]]]}), 0)
輸出
densified_polygon |
---|