提升CAD 图植被符号块自动移位效率的方法探讨
2022-07-26赵登文陈虹雨
刘 波,赵登文,李 恒,陈虹雨,管 艳
(成都颉达科技有限公司,四川 成都 610083)
0 引言
植被符号块是数字地形图的重要组成部分,在面状植被符号块绘制时,制图软件可根据行列间距进行均匀绘制,图面比较美观。然而在面状区域内植被符号块可能与文字注记、高程点、等高线、田埂、陡坎等图形要素相互压盖。现有基本的数字地形图生产软件有南方CASS、MicroStation、清华山维、EPS 等,都只具有地形图生产的基本功能。而这些基本的功能模块对数字地形图中图面压盖处理显得极其困难,不能对数字地形图中的图面问题如数字地形图的植被符号快压盖问题进行检查或处理,只能依靠人工目视检查或修改。因为人工核查费时费力,也很难保证核查到每一个植被符号块。在众多实践过程中,也有一些专家、学者和技术人员使用C++、VBA、lisp、FME 等编写程序[1-4],实现在图上一定区域内分析植被符号块周边是否有空间插入植被符号块且不与其他图形要素相互压盖。实现相关功能的具体算法中,涉及植被符号块所占用空间的判定及通过循环进行空间位置的搜索,其中角度移动增量、距离步长、搜索范围等值的设定对于程序运行效率有较大影响,选择合适的角度移动增量、距离步长、搜索范围阈值能够较大提高作业效率。
1 地形图中植被符号块自动移位方法
1.1 植被符号块压盖其他图元的判定方法
在数字地形图中,植被符号块通常是一个块,尤其是在南方Cass 制图软件中,不同类型的植被符号块有固定的编码,方便对各种类型的植被进行针对性处理。
针对一个植被符号块是否与其他图元相互压盖,可采用如下两种判定标准:①植被符号块的外接矩形范围与其他图元相互压盖。②植被符号块的组成部分凸点与其他图元相互压盖。此两种类型所对应的空间范围稍有差别,第一种判定方式对空间位置要求更高,更难找到合适位置移动对应的符号块,导致程序处理效果稍差,如图1 所示。
图1 植被符号块所占空间范围
在lisp 程序中,可以由上图所示植被符号块周边红线的顶点坐标组成的链表构造选择集[5],如果选择集中有元素,则认为植被符号块与其他图元相互压盖。
1.2 植被符号块周边空间位置判定方法
针对具体图形中的植被符号块,搜索其周边是否有空间位置,通常采用设定角度移动增量DA、距离步长DR、搜索范围阈值三个参数进行处理。如给定角度移动增量DA=45°、距离步长DR=0.5m、搜索范围阈值=2m,即可在编程时使用循环语句逐一查看植被符号块插入点周围2m 范围内4 个同心圆环上与圆心连线的角度是(0°、45°、90°、135°、180°、225°、270°、315°)的位置是否有空白空间完整插入植被符号块且不压盖其他图元。当搜索到满足要求的空白区域时,移动植被符号块到该位置,针对该植被符号块的循环搜索结束。当循环达到搜索范围阈值时也未找到合适空间时,则在当前参数情况下认为该植被符号块周边2m 范围内无合适空间,程序不对该图元进行处理,待整个图中的植被符号块搜索完成后,人工再进行核查。
1.3 主要lisp 程序代码
判断植被符号块是否压盖的主要lisp 程序代码如下。
;ss 是植被符号块构造的选择集,i 是从0 开始用于循环的计数值
上文中提到的“自定义函数,用以获取一个多边形的闭合范围的顶点链表,用于构造选择集”,针对不同
符号块形状及顶点特性需要特别编制代码,本文实验中采用的自定函数具体内容如下。
;程序中设定了22 中符号块的处理方式,此处不再一一列出代码
1.4 影响程序运行效率的变量取值
根据分析,角度移动增量DA、距离步长DR、搜索范围阈值都可能影响程序运行效率,本文实验中探讨的情况如下。
(1)实验过程中采用的搜索范围阈值设定为2m。实验用的CAD 图为1:500 比例尺,植被符号块间距设定为10m,如果两个相邻植被符号块同时相向移动2m,则距离变为6m,不宜靠得更近。
(2)采用固定角度增量方式,一个圆周为360°,可采用22.5°作为角度增量,即16 个方位进行固定搜索。此种方式每个距离步长的最多搜索次数为16 次。
(3)采用角度增量与搜索半径相关联的方式,如本文实验中设定:搜索半径在0~0.5m 时,DA=0.35(弧度);搜索半径在0.5~1m 时,DA=0.3(弧度);搜索半径在1~1.5m 时,DA=0.25(弧度);搜索半径在1.5~2m 时,DA=0.2(弧度)。一个圆周约为6.28(弧度),采用弧度方式方便程序计算。此种方式,不同搜索半径对应的搜索次数可能是17、20、25、31 次。
(4)根据2m 搜索范围阈值,距离步长DR 选择了0.1m、0.2m、0.3m、0.4m、0.5m 共计5 个值。
2 程序运行情况分析
运用前文所述植被符号块与其他图元相互压盖的第二种判定方法,可以准确画出植被符号块占用空间位置的顶点并画出封闭图形,如图2 所示。
图2 植被所占空间分析
实验用1:500 地形图,图中有729 处植被符号块,共发现565 处植被符号块与其他图元存在相互压盖的情况。经过多次实验,程序移动的压盖植被符号块数量最少为275 个、最多为299 个,分别占需要处理的植被符号块百分比为48.67%、52.92%。对于可以处理和未能处理的植被符号块,程序运行效果如图3 所示。
图3 程序运行效果
在程序中设定不同的角度移动增量DA、距离步长DR、搜索范围阈值参数,程序运行时间与处理数量对比情况如图4 所示。
图4 程序运行时间与处理数量对比
通过设定不同参数值进行多次实验得出以下结论。
(1)采用固定角度增量,距离步长设定为0.5m,运行时间最短为14.48min。
(2)采用变角度增量,距离步长设定为0.1m,运行时间最长为68.53min。
(3)采用固定角度增量的平均处理个数为286,采用变角度增量的平均处理个数为288。
3 结语
通过在实际项目中编程解决植被符号块与其他图元相互压盖问题,并分析影响程序运行效率的因素,修改关键参数进行多次实验,得出适用于1:500 地形图、植被符号块间隔为10m 的一组参数,同时发下其他问题总结如下。
(1)距离步长增大时,程序运行时间将缩短,同时程序能够正确处理的植被符号块压盖问题数量也将减少。
(2)变角度增量与固定角度增量两种模式,处理的植被符号块压盖问题数量、程序用时相差不大。
(3)1:500 地形图中,自动插入的植被符号块间隔为10m 时,距离步长0.3~0.4m 是比较合适的一组参数。
(4)如果不考虑时间问题,选用更小距离步长能使程序自动处理更多植被符号块压盖问题。
(5)本文只采用了一种变角度增量的方式,采用其他变角度增量方式可能一定程度提升程序运行效率。已有的算法主要是通过循环进行逐一查找,通过人工智能、图形识别等其他方法有可能进一步提升效率。
本文的实验获得了较理想的效果,采用本文所提供的建议参数,能提升程序的运行效率。这些思路方法对其他类似的程序运行效率提升具有一定参考价值。