文章目录
- 工具步骤
- 应用场景
- 算法输入
- 算法输出
- 算法示意图
- 算法原理
- 后处理
工具步骤
选中一个需要裁剪的面,点击“相交面裁剪”工具,多选裁剪模板面,空格执行。
应用场景
常用于基于遥感影像的建筑物几何面编辑。
算法输入
一个待裁剪的面,和多个用于裁剪的模板面
算法输出
裁剪后的面和插入形点的模板面
算法示意图
算法原理
基于turf.difference方法,对面P和模板面maskPs进行裁剪,得到diffP
后处理
由于turf.difference产出的面,有时候会有极小的缝隙面,因此做第一步后处理。
part1 (optional):剔除面的小角度
- 遍历面的坐标,包括孔洞
- 循环执行以下程序,直至线坐标点少于等于4个或线上没有小于15度的角
- 遍历线的坐标,计算当前点与相邻两个点的夹角是否小于15度,如果是,找出角度最小的点的索引
- 剔除最小角的点
为了确保裁剪后,两个面在不同精度坐标下都是相邻状态,需要给模板面maskPs插入共线的形点。
part2:给maskPs插入形点(insertPointsToPolygon)
- 获取diffP的所有形点pts
- 遍历maskPs的所有线段,利用turf.booleanPointOnLine方法,判断pts是否存在落在线段上的点,如果存在,则给该线段插入形点
- 输出diffP和插入形点的maskPs