前段时间遇到过一个需求,CAD格式数据的任意图斑范围接边检查,听起来和图幅间接边检查很相似,确实大体思路都差不多,就是获取与范围面相交的待检查要素,再分别判断线面要素是否未与相邻图幅要素相接,最后输出检查结果。二者的区别就在于这个范围,图幅间接边检查其范围是标准图幅,不会存在同个图幅内部要素检查接边的情况,但是任意图斑范围接边检查的范围可能是在同一图幅内,也可能是跨越多个图幅,如下图:
以线接边检查为例,字段Map_No表示图斑要素所跨越的文件名称,通过该字段可以获取相应的待检查文件及要素;
首先对字段Map_No做一点处理,Map_No字段内容为与该图斑范围相交的待检查数据文件名称,通过分隔符”,”提取文件名称;再根据参数”待检查数据路径”(待检查数据所在文件夹)合成需读取的数据路径;
同时利用图斑范围外扩一定距离(读取图斑范围外数据)进行空间判断,减少待检查数据读入量。
图斑范围面转线要素,只考虑图斑范围边线一定范围内要素是否接边,这里以0.1m为例;同时提取线要素两个端点,当端点落在范围边线0.1m内判断是否存在其他点要素(线的端点)与当前点要素存在重叠,是则判定为要素接边,否则没有要素与之接边。
结果如下图:
放大如下: