马云岗
在公路、铁路等线路的设计、施工过程中,带状图的测量是经常要用到的。在带状图的测量过程中,为了在后续线路设计、施工中使用方便,就必须在带状图中添加公里格网,以解决用图过程中的定位定向问题。
在内业制图过程中,常见的手工添加公里格网的步骤如下(以1∶2 000图为例):
1)按照接图表每幅图的范围,按幅裁图,裁成一幅一幅的地形图。
2)在单幅图中,插入事先准备好的公里格网图块,插入点必须选择200 m的整数倍地方,且公里格网必须覆盖整幅图。
4)延长紧邻内图廓,但是还没有与内图廓相交的十字丝,使之与内图廓相交。
5)把那些与内图廓相交的十字丝按照规定的长度保留与内图廓相交的部分,其余的裁掉。
6)在内图廓外,内图廓与十字丝相交的地方注记东方向和北方向坐标,注记精度保留到0.1 km。
7)把图幅按照图头要求的方向转正,然后把注记转正,并且移到合理的位置。
使用上述方法时,不仅费工费时,增加了作业人员的工作量,而且在注记坐标时,极易出错,给用图单位造成使用上的不便。
分析上述每一步操作,完全可以采用一定的算法,用计算机去实现,省时省力,又不易出错。
第一,有悟性的人一切从目的出发。招人的时候,培训的时候,都要牢记一点——目的是什么。很多员工在做事的时候,走在路上忘了方向,只是去做事情,却把目的忘了,不知道为什么去做。甚至为了专业而专业,看起来搞得像模像样的,但目的不对,这是有问题的。
1)目的。
综合以上所述,为了减轻作业人员的工作量和减少作业过程中错误的发生,以便提高作业效率,提高成图质量,需要对这个功能进行设计开发。
2)设计思路。
由于历来的习惯,单位对带状地图的分幅方法,与作业单位中常用的Cass的带状地图的分幅方法完全不同,而且用户单位也习惯了我们单位提供的带状图的分幅方法,所以不能直接应用Cass内的功能,需要根据单位的实际情况独立进行开发。
3)平台选择。
AutoCAD是Autodesk公司的主导产品,而且是当今最流行的绘图软件,在二维、三维绘图领域拥有广泛的用户群。AutoCAD有强大的二维功能,如绘图、编辑、图案绘制、尺寸标注以及强大的二次开发功能,提供多种开发工具,如:AutoLisp,ADS,ARX,方便用户选择。
单位里带状地图的编辑平台习惯用AutoCAD平台,而且用户单位一般也要求提供dwg格式的带状图,所以对这个功能的开发就定在AutoCAD平台上。
在AutoCAD平台的开发中,最常用也是上手最简单的就是AutoLisp工具,而且AutoLisp语言在AutoCAD平台上可以直接调试,方便语法的检查,最主要的是,单位里历年来在AutoCAD平台上开发的工具,基本上全是用AutoLisp语言,笔者对AutoLisp也比较熟悉,所以开发语言就选用AutoLisp语言。
既然决定了开发平台及语言,接下来就是具体实现的步骤和方法了。这里需要说明的是,由于在CAD平台下实现拓扑比较困难,而且本次开发也只是实现一个小功能而已,所以需要对这个功能的使用环境做出一个严格的规定:
首先,带状图所采用的比例尺一般是1∶2 000,所以在编程中,涉及到图形比例尺时,统一采用1∶2 000,所以单幅图的边长都是1 000 m,面积是1 km2,注记大小采用1∶2 000图示规范;
其次,在接图表上分幅时,内图廓必须是闭合的;
再次,在生成公里格网及注记时,由于字头方向每个项目都不一样,所以要由用户指定内图廓的哪条边作为图头方向,以便程序自动调整注记的字头方向。
1)首先选择要生成公里格网的图幅的内图廓,注意在屏幕上选择时所点击的位置是项目规定的图头方向,且内图廓必须是封闭的,这样就得到了内图廓的四个角点坐标。
2)向内图廓内部拷贝图廓的四条边线,得到四条线段。注意:偏移拷贝的距离是根据1∶2 000地形图规范定的。
3)求得该图廓的东坐标和北坐标的最大最小值。
4)在东坐标方向上,依从小到大的顺序,每隔200 m画一根直线,求得该直线与内图廓和向内偏移拷贝得到的四条线段的交点。通过这个功能,可以把与内图廓线相交的东坐标方向上的公里格网线全部画出,并且在适当的位置注记坐标。
5)在北坐标方向上操作,如4)所述。
6)判断东坐标和北坐标的最大最小范围内,在200 m的整数倍的位置的点是否在内图廓线以内,若是,在该位置画出十字丝。
7)清除程序操作过程中的临时线段。
效果图见图1。
在以上的设计步骤中,有两个设计要点:
1)计算图头朝向。
由于内图廓是一条有四个节点的封闭的线段,且不知道这条线段的起点,所以必须首先判断这条线段的哪两个节点的连线是图幅的图头朝向。
程序中通过判断用户在屏幕上鼠标所点击的位置和这条线段四个节点的距离来判断图头朝向:(if(=(fix(+(distance selectPt pt0)(distance selectPt pt1)))1000)(setq selectLine 1))
2)拓扑判断。
例如判断一个点是否在内图廓范围内:这个在判断坐标在200 m整数倍的位置是否在内图廓线内,以决定是否在该位置画出十字丝时特别有用。
在程序中,是通过计算该点与内图廓四个角点所形成的四个夹角之和是否等于360°来判断的,如果是,则说明该点正好在图廓内部,如果否,则说明该点不在图廓内部。
(if(=(fix(+jj0 jj1 jj2 jj3))360)(setq temppt T))
图1 效果图
通过这个功能的实现,不仅减轻了作业员的劳动量,而且再也不用担心在标注坐标注记时会出现错误(在测绘工作中,坐标注记错误是比较严重的错误);从用户反馈的信息来看,效果也是比较好的,没有再发生在设计施工拼图时,发现坐标注记错误的,社会效益和经济效益都不错。
有时候,在工作中一个不经意的发现、一个小小的操作流程的改善,或者是一个不起眼的小功能的实现,都能够给自己的工作提高效率,积少成多,慢慢的,就会形成自己的丰富的创新成果,既加深对工作的了解,提高自己的工作效率,同时也会增加自己的收益收入,这是一个皆大欢喜的结果。这就需要在工作中,在熟练的前提下,要经常思考,不断的改善工作流程、改善或创新一个功能,就能提高工作效率,增加经济效益。这些工作不需要多么宏伟,多么巨大,要积少成多,“春风潜入夜,润物细无声”。
[1]冯洪岩.应用南方测绘CASS软件数字化测图的几点体会[J].四川建筑,2005,25(9):175-176.
[2]孙江宏.VisualLisp R14-2000编程与应用[M].北京:科学出版社,1999.
[3]梁银娟,李恒静.结合MAPGIS的土地利用图编制及应用[J].山西建筑,2011,37(10):255-256.