地形图制图中多段线的合并问题研究
2012-02-08孙太山李泽雷陈峰刘博
孙太山,李泽雷,陈峰,刘博
(大连市勘察测绘研究院有限公司,辽宁大连 116021)
1 引言
AutoCAD是美国Autodesk公司生产的计算机辅助设计软件,经过不断完善,现已成为国际上广为流行的绘图软件。在测绘领域往往采用基于AutoCAD二次开发的绘图软件进行地形图制图工作,如南方测绘公司研发的CASS软件等。但是在其制图过程中,依旧采用AutoCAD软件自带的PEDIT命令进行相应的多段线合并工作,由于该命令考虑因素单一,无法满足地形图制图过程中遇到的诸多复杂问题,导致多段线合并难以进行,除非进行相应的处理,但是这样的处理工作又会导致合并过程异常繁琐,进而使地形图制图过程劳动强度加大、影响了地形图制图效率。本文首先深入研究地形图制图过程中遇到的多段线合并问题,然后对其解决方法进行讨论,并利用AutoLisp编程语言编写适合于地形图制图的多段线合并程序,从而解决了地形图制图中多段线的合并问题,提高了制图效率。
2 制图中常见的多段线合并问题研究
2.1 多段线高程属性不同问题
AutoCAD中应用PEDIT命令进行多段线合并有一个前提,就是待合并的多段线高程属性值必须相同,而多段线的高程属性值是由该多段线起点的高程值决定的,即多段线的高程属性值等于该多段线起点的高程值,这样就会出现如下问题:当前段多段线的起点高程值与后段多段线的起点高程值相同时,高程属性值必然相同,也即合并可以顺利进行,反之,若不同,则无法合并。例如,有3个外业所测地形特征点A、B、C,其相应高程值分别为 HA=0,HB=10,HC=20,如图1所示。当点A、B与点B、C分别构成多段线时,多段线AB的高程属性值等于起点A的高程值0,而多段线BC的高程属性值等于起点B的高程值10,显然,由于高程属性值不同,多段线AB与BC无法正常合并。
图1 多段线高程属性示例图
另外,在航测地形图基础上进行的地形图修测工作中,制图存在同样问题,即实测特征点所连接成的多段线与航测底图的多段线高程属性值不同,导致多段线无法顺利合并。
2.2 多段线经过某些操作后带来的端点坐标不相符问题
上文已经论述过AutoCAD中应用PEDIT命令进行多段线合并有一个前提,就是待合并的多段线高程属性值必须相同。而另一个前提就是前段多段线的末点坐标必须与后段多段线的首点坐标相同,但在地形图制图实际操作过程中往往会遇到如下情况:
(1)延伸再修剪操作后带来的端点坐标不相符问题
如图2所示:现有两段多段线AB、CD,根据制图需要,首先通过命令将多段线CD沿着DC方向延伸至多段线AB上,交多段线AB于E点,接着修剪掉AE段,最后需要将多段线BE与ED进行合并,但是用命令PEDIT无法合并,于是笔者输出多段线BE中的E点与多段线 ED中的 E点 x、y坐标差分别为:△x=1.418 81×10-10,△y=0.0。可见,两多段线不能合并的原因是因为经过延伸再修剪后同一端点坐标出现了微小差别,就是因为这种微小的差别导致了多段线无法正常合并;
图2 延伸再修剪操作后带来的端点坐标不相符问题示例图
(2)偏置操作
如图3所示:现有多段线AB,根据制图需要,首先将多段线向右偏置一定数值得到多段线CD,接着连接A、C点,再将多段线AC向下偏置多段线AB的长度得到多段线B'D'。理论上多段线B'D'应该是与多段线BD重合,但是当用命令PEDIT将4段多段线合并时,结果显示多段线AB、AC、CD可以合并,但是多段线B'D'却无法与之合并。同样输出多段线AB中的B点与多段线 B'D'中的 B'点的 x、y坐标差分别为:△x=-5.820 77×10-11,△y=0.0。可见,多段线不能合并亦是因为偏置操作后端点坐标出现了微小差别。
图3 偏置操作后带来的端点坐标不相符问题示例图
(3)打断再捕捉操作
如图4所示:现有多段线ABC,需要在B点打断并连接端点B与另一个地形特征点D,若首先以捕捉点的模式在B点打断多段线ABC,接着同样以捕捉点的模式连接BD,结果发现多段线AB和BD无法进行合并,若连接BD时以捕捉多段线AB端点B的模式进行连接,则可以顺利合并,笔者研究发现:在某些情况下,以捕捉某点的模式打断多段线后,多段线打断处端点的坐标与该点的坐标发生如上文所述有极微小变化,同时,若欲再次将该多段线与其他点连接时,不采用捕捉端点连接,则坐标的微小变化同样会致使多段线合并工作无法进行。
综上所述,在地形图制图的多段线合并过程中存在诸多问题,若多个问题叠加,则多段线合并问题变得更加棘手。实际工作中往往进行反复的多段线合并工作,直至成功为止,显然,这样的多段线合并工作,重复劳动较多,效率明显下降。
图4 打断再捕捉操作后带来的端点坐标不相符问题示例图
3 解决合并问题的思路与方法探讨
(1)由于多段线的高程属性值是影响其合并的第一要素,所以在多段线合并的第一步就可以将各待合并的多段线的高程属性值统一变为一个常数,而不考虑其高程属性值是否相同,同时为了防止混淆,笔者建议可以统一将其高程属性值变为零。
(2)对于多段线经过若干处理后以及捕捉操作后带来的端点坐标不相符问题,都可以归结为由于前段多段线末点与后段多段线首点坐标不一致所导致的多段线不能合并问题,所以解决的办法就是使其坐标一致,因此笔者采用如下方法:
①首先,提取前段多段线末点与后段多段线首点坐标;
②其次,采用将后段多段线首点移动至前段多段线末点的方法来解决坐标不相符的问题,但在这个过程中,为了避免误选的多段线参与合并,可以设置一个阈值,即当前段多段线末点与后段多段线首点x、y坐标差各小于一个数值时,可以认为是同一点,可以移动并参与合并;
③最后,当确认是同一点时,应用PEDIT命令然后选择JOINT进行合并。
对于上述处理方法,笔者利用AutoLisp编程语言编制成程序以提高处理效率,其处理过程亦可用图5框图示意。
图5 多段线合并处理过程流程图
4 结论
(1)虽然商用测绘类绘图软件功能日趋强大,但由于实际工程的复杂性,对一些细节问题尚需做进一步分析与解决;
(2)笔者通过分析地形图制图中多段线的合并问题及其解决方法,结合AutoLisp编程语言编制了适合于地形图制图的多段线合并程序,从而解决了地形图制图中多段线的合并问题,提高了制图效率。
[1]李学志,方戈亮,孙力红.Visual LISP程序设计[M].北京:清华大学出版社,2010.
[2]仝巧珍,王燕午,吴永军.AutoCAD多段线编辑功能的完善[J].内蒙古科技与经济,2011(06).
[3]甘特.AutoLISP 12.0程序设计[M].北京:学苑出版社,1993.
[4] 储伟俊,谭业发,周建钊等.机械CAD中节点技术的应用[J].起重运输机械,2006(08).
[5]任航科.LISP语言在测绘作业中的应用[J].城市勘测,2011(1).
[6]李星宇.数字地形图编辑方法[J].测绘通报,2006(11).