一种智能移动高程点注记的改进算法
2015-12-11蒲朝旭
蒲朝旭,汤 洪,林 莉
(1.成都理工大学地球科学学院测绘工程系,四川成都610059;2.凉山州多维数字城市测绘有限公司,四川西昌615050;3.外生成矿与矿山环境重庆市重点实验室(重庆地质矿产研究院),重庆400042;4.煤炭资源与安全开采国家重点实验室重庆研究中心,重庆400042)
一、引 言
高程注记是地形图[1-2]中一种非常重要的表达地理信息注记。在数字化成图中,一般采用高程点和高程注记两部分来描述高程的位置信息。目前,国内普遍采用基于CAD平台进行二次开发而成的数字化成图软件来绘制地形图,对于高程点的展绘,则主要是利用软件自带的高程点注记/展绘功能,将高程注记简单地放置于高程点旁边,一般高程注记在高程点的右侧,这就难免会造成对已有地物的遮挡或压盖。这样不仅不利于快速准确地判读相关地物信息,而且影响了地形图的美观,给后续地形图的使用带来了不便。
传统的解决办法是在高程注记展绘完成后,采用手工方式将遮挡或压盖已有地物的高程注记进行移位。虽然此方法能够解决高程注记对已有地物的遮挡或压盖,但效率低下,且易出现纰漏。随着计算机技术的发展,不少学者提出了智能移动高程注记的方法,文献[3—7]分别提出了基于矩形搜索和基于圆形搜索的方法对高程注记进行智能移位,虽能满足要求,但按顺时针方向旋转和逆时针旋转的效果有所差异,且存在其他一些不合理的地方。针对上述存在的问题,本文结合此两种方法的优势和相关规范[8]的要求,提出一种按照“S”型进行搜索的方法,结合文字消隐,能更好地在满足规范要求的情况下来解决高程注记对已有地物的遮挡或压盖问题。
二、已有智能移位方法简介
引言中所述情况如图1所示。图中是使用CASS的高程点展点功能将高程点直接展绘至地形图上的效果,从图中可以看出,存在诸多地物被高程注记遮挡或压盖的情况。下面对已有智能移位方法进行简介。如图2所示,P为一个高程为123.45 m的高程点,该高程点的点位注记位置为一个半径为r的实心圆,p点至高程注记的距离为l(不同的数字化成图软件该距离有所差异),P点至文字顶部的距离为h,一般情况下H=2h(即高程点点位为高程注记的垂直方向中心位置),H为高程注记文字的高度,L为高程注记文字的宽度。其中,L、H随着地形图比例尺、文字样式、高程注记有效数字位数的不同而不同。图2中的虚线框表示高程注记的最小外截矩形,其作用是判断高程注记是否会压盖其他地物。若有需要,还可以将该矩形放大或缩小一定的倍数来进行地物压盖判断,从而满足特殊要求。
1.矩形搜索方式
文献[3—5]提出了基于矩形搜索的方式来实现高程注记智能移位,该方法的智能移位搜索分析如图3所示。从图中可以看出,首先需要建立一个长为L+l+0.5r,宽为H+r的初始搜索矩形作为第1层搜索矩形(需要注意的是图中高程注记点点位靠矩形的右边)。具体的字母含义请参见图2的介绍。
图1 软件自动注记高程点后对已有地物的压盖示意图
图2 高程注记分析示意图
图3 矩形搜索方式分析示意图
建立第1层搜索矩形之后,即可让高程注记从初始位置(即默认注意位置)开始,在该矩形上以顺时针或逆时针的方式按照指定的步长进行搜索,若搜索到某一位置高程注记没有压盖任何地物(包括高程点所在位置的实心圆),则将高程注记位置修改为刚才搜索到的最佳位置,此时立即停止搜索;反之,继续搜索。如果高程注记搜索完第1层矩形之后仍未查找到最佳位置,则将第1层矩形扩大D(如0.5H)以形成第2层搜索矩形,继续按照上述方法进行搜索,依此类推直到找到最佳位置为止。实际应用中,一般会设置一个矩形偏离高程点点位的最大距离,若矩形偏离值大于该阈值,则直接将高程注记移回原注记位置,且结束搜索。
此法虽能实现了对高程注记的智能移位,但仍存在一些不足,如高程注记移动存在方向性(即顺时针移动和逆时针移动其最终效果不同)。同时,存在高程注记移位的过程中不能保证高程注记与高程点点位的距离始终保持一致等问题。
2.圆形搜索方式
文献[6—7]提出了一种基于圆形的搜索方式来实现高程注记智能移位,该方法的智能移位搜索分析如图4所示。图中的①、②、③、④这4个矩形分别代表高程注记文字在圆形搜索方式中的4个方向极限位置。
圆形搜索方式是以高程点为圆心,某一偏离距离r为半径来建立搜索圆。具体的搜索方法与矩形搜索方式类似。
图4 圆形搜索方式分析示意图
虽然此法能实现高程注记的智能移位,避免了矩形搜索方式中对某些位置的漏检测问题,但仍然存在一些问题,如采用圆形搜索方式中需要实时变换高程注记的对齐点,这给日后图形的批处理带来了不便。同时,对于采用最小外接矩形上的位置来进行搜索判定增加了程序设计的复杂度。
三、算法设计
针对上述矩形搜索和圆形搜索方式中存在的诸多问题[9-10],结合高程注记的具体情况和地形图图式(如图5所示)中对文字注记的相关要求,笔者提出了一种“S”型搜索方式的高程点智能移位算法,同时对无法搜索到合适位置的高程注记进行文字消隐,既能保证高程注记移位后在最小偏离距离中的唯一性,也能满足对高程注记智能移位的需求,便于地形图的日后使用。
图5 地形图图式中文字的注记原则
1.“S型”搜索方式算法分析
结合图2、图5和图6,“S”搜索方式具体步骤如下:
图6 “S”型搜索方式示意图
1)将注记在地形图中的高程点和高程注记过滤出来放入一个集合中。
2)对该集合中的每一个高程注记,依次计算出其最小外接矩形,利用该最小外接矩形来判定是否存在对已有地物的压盖,如果不存在对已有地物的压盖,则跳过对该高程注记的处理;若存在对已有地物的压盖,则进行后续步骤的处理。
3)若经过2)中的判定,该高程注记存在对已有地物的压盖,则继续进行以下处理和判断:
a.将高程点的一周360°按照图6中的方式划分成Ⅰ、Ⅱ、Ⅲ、Ⅳ 4 个区域,每个区域为90°。
b.利用高程点距离高程注记最小外接矩形之间的距离l为半径建立一个圆,也可以建立一个椭圆。
c.在建立好搜索圆之后,按照Ⅰ、Ⅱ、Ⅲ、Ⅳ的顺序进行最佳位置的“S”型搜索,具体的搜索方式为:首先,将高程注记在Ⅰ中的位置由现在的位置调整到Ⅰ区的最下边,然后按照某一指定的步长进行移动,该指定步长根据实际情况进行设置。每移动至一个新的位置,需要利用高程注记的最小外接矩形来判定是否存在对已有地物的压盖,若不存在对已有地物的压盖,则将高程注记移至此位置,同时结束搜索;反之,则继续按照该步长向前进行搜索。若Ⅰ区搜索完成未查找到最佳位置,则继续进行Ⅱ区的搜索,若Ⅱ区查找完仍未找到最佳位置,则继续进行Ⅲ区、Ⅳ区的搜索,从而形成“S”型搜索路线,直到查找到最佳位置为止。
d.若步骤c中查找完第1条“S”型路线未找到最佳位置,则需要将该“S”型路线扩大某一距离D(只需要将初始的圆或椭圆的半径扩大D)以形成第2条“S”型路线进行继续查找;若第二条“S”型路线查找完成仍未找到最佳位置,则继续查找,直到找到最佳位置为止。实际生产工作中,为避免高程注记距离高程点点位过远而影响高程点的识别,往往需要设置一个最远偏移距离。
e.在步骤d中,若搜索完规定的最远偏移距离之后仍未查找到最佳位置,则直接将高程注记放回原位。
2.文字消隐
地球表面的形态千变万化,复杂程序不一,对于地物繁多且复杂的地区所成的地形图中,若想找到一个放置高程注记的最佳位置,其难度系数很高,且不容易找到空白区,因此,若想让高程注记所压盖的地物不进行显示,可以采用文字消隐来完成。
文字消隐[11-12]的实质是建立一个无色且不透明的实体,将该新生成的实体置于高程注记之下、其他地物实体之上。这样通过将地物与高程注记文字重叠的部分进行消隐,即可让图形显示更加清晰明了。
3.程序流程图
根据第1节的详细介绍,并结合实际的程序设计,“S”型高程注记智能移位的程序流程如图7所示。
图7 程序流程
四、算法实现与应用效果
1.界面设计
根据2节中对“S”型搜索算法的详细介绍,利用 ObjectARX .NET[13-15]语言基于 AutoCAD 进行了程序实现。
图8为“S”型智能移动高程注记的程序界面。用户可以设置是否对未能找到最佳位置的高程注记进行文字消隐,也可设置高程注记到高程点的最大偏移距离,默认设置为1.0H(H为文字高度)。如果有其他需要还可以在程序中进行设计和实现。确定后,即可采用选择部分高程注记或对全图高程注记进行处理等两种方式来智能处理高程注记。
图8 程序设计界面
2.“S”型智能高程注记移位应用效果
为更直观地比较采用“S”型智能高程注记移位算法的效果,对图1中的高程注记进行移位处理,程序处理之后的效果如图9所示,对无法查找到高程注记最佳位置的高程注记进行文字消隐之后的效果如图10所示。从图9和图10可以看出,该算法不仅能够实现高程注记对已有地物的智能避让,同时也保持了图面美观,并且高程注记更加合理,降低了识图的难度。目前该算法已经应用于实际的生产中,取得了良好的效果。
图9 “S”型智能移位得到的效果图
图10 “S”型智能移位并对无法移动的高程注记采用文字消隐所得到的效果图
通过试验可知,对于一幅具有500个高程注记的地形图采用“S”型智能移位算法处理,程序能够在2 min内完成,程序的主要运行时间花费在查找高程注记的最小外接矩形是否压盖已有地物,程序的时间复杂度随着高程注记的个数、所选择的步长及所设置的高程注记偏离高程点的最大距离的不同而改变。特别需要注意的是,若智能查找算法中所设置的步长过短,则会严重影响程序的运行效率,故应选择适宜的步长。
五、结束语
本文对已有的矩形搜索算法和圆形搜索算法进行了详细的对比分析,同时也对“S”型智能移位算法进行了较为详细的阐述。通过对“S”型智能移位算法在实际地形图中的处理效果展示和算法的效率分析,充分表明了该算法能够完全满足实际生产中对高程注记进行智能移位的需求。该算法的实现效果完全能够达到,甚至优于手工处理高程注记的效果,结合文字消隐,能够更加方便合理地处理高程注记对地物的压盖。通过实践,本文方法取得了良好的效果,大大提高了生产效率、降低了生产成本。
[1]何孝莹,包红岩,韩颜顺.大比例尺扫描地形图中房屋的识别[J].测绘与空间地理信息,2005,28(4):61-63.
[2]易辉伟,江资斌,周翠竹,等.地形图矢量化的后处理[J].中国有色金属学报,2002,12(4):808-811.
[3]唐诗华,李洪玉,谢劭峰.在CAD平台下实现高程点智能展点的一种方法[J].测绘通报,2006(4):51-53.
[4]付崇江,余代俊,王丽丽.基于.NET平台的CAD地形图注记的自动调整[J].工程勘察,2010(3):84-90.
[5]李乃良,杨孝安.基于AutoCAD的地形图中高程注记的自动移位[J].城市勘测,2008(2):119-121.
[6]杨孝安,王保国.基于CAD平台的植被符号自动移位[J].城市勘测,2008(1):122-124.
[7]刘斌,唐诗华,李升.AutoCAD中高程注记位置自动识别展点的一种改进方法[C]∥《测绘通报》测绘科学前沿技术论坛论文集.北京:测绘出版社,2008.
[8]中华人民共和国国家质量监督检验检疫总局,中国国家标准化管理委员会.GB/T 20257.1—2007,国家基本比例尺地图图式 第1部分:1∶500 1∶1000 1∶2000地形图图式[S].北京:中国标准出版社,2008.
[9]龚子桢,花向红,尹相宝,等.基于AutoLISP的高程点批量修改算法设计与实现[J].测绘通报,2011(4):41-43.
[10]柏捷,顾有兵.高程点与高程注记的匹配及其应用[J].城市勘测,2007(5):88-89.
[11]顾有兵.CASS图形中高程注记的消隐处理[J].城市勘测,2010(6):111-112.
[12]黄祖登,柳华桥.高程注记自动挪位与消隐的程序实现[J].才智,2012(3):65-67.
[13]曾洪飞,张帆,卢择临.AutoCAD VBA& VB.NET开发基础与实例教程[M].北京:中国电力出版社,2009.
[14]张帆,郑立楷,王华杰,等.AutoCAD VBA开发精彩实例教程[M].北京:清华大学出版社,2004.
[15]龚子桢,花向红,徐秀川,等.在CAD平台下实现房屋属性自动修改的方法[J].测绘通报,2011(9):80-82.