文章目錄
- 工具步驟
- 應用場景
- 算法輸入
- 算法輸出
- 算法示意圖
- 算法原理
- 后處理
工具步驟
選中一個需要裁剪的面,點擊“相交面裁剪”工具,多選裁剪模板面,空格執行。
應用場景
常用于基于遙感影像的建筑物幾何面編輯。
算法輸入
一個待裁剪的面,和多個用于裁剪的模板面
算法輸出
裁剪后的面和插入形點的模板面
算法示意圖
算法原理
基于turf.difference方法,對面P和模板面maskPs進行裁剪,得到diffP
后處理
由于turf.difference產出的面,有時候會有極小的縫隙面,因此做第一步后處理。
part1 (optional):剔除面的小角度
- 遍歷面的坐標,包括孔洞
- 循環執行以下程序,直至線坐標點少于等于4個或線上沒有小于15度的角
- 遍歷線的坐標,計算當前點與相鄰兩個點的夾角是否小于15度,如果是,找出角度最小的點的索引
- 剔除最小角的點
為了確保裁剪后,兩個面在不同精度坐標下都是相鄰狀態,需要給模板面maskPs插入共線的形點。
part2:給maskPs插入形點(insertPointsToPolygon)
- 獲取diffP的所有形點pts
- 遍歷maskPs的所有線段,利用turf.booleanPointOnLine方法,判斷pts是否存在落在線段上的點,如果存在,則給該線段插入形點
- 輸出diffP和插入形點的maskPs