摘 要:由于目前在进行纵横断面计算及检查的常用方法上面存在一些缺陷,使工作的质量和效率受到影响,需要进行改进。而本文正是针对这些缺陷,使用Excel VBA对这些缺陷进行有效的处理,从而减少在纵横断面计算中出现的错误,加强检查效果。
关键词:测绘工程,纵横断面,Excel VBA
一、 概述
目前为了外业纵横断面数据采集时方便快捷,采集的数据格式同设计一般要求的纬地格式不同,以下为两种横断数据格式:
而对纵断面来说,两种格式相同,只不过外业采集时,纵横断面产生在同一个文件中,而纬地格式需要单独的纵断面文件,其格式为:
对于两种数据格式就需要进行数据转换。
由于原始数据采集时数据是记录在记录表中的,需要将记录表中的数据录入到计算机中,再转换为纬地格式,在此过程中就有可能产生录入错误,需要对原始记录数据和录入数据进行校对、检核。而常规的人工检查方法费时,费力,效率低,并且,对一些不合理的断面不能进行直观的检查,使得此项工作十分的繁重。所以需要对常规的人工检查进行改进。
二、 目前的处理方法及不足
目前对于数据转换,一种常用的方式是直接使用Excel中的公式进行计算。在Excel工作簿中建立有3个工作表,分别命名为“原始数据”、“横断”、“纵断”,在“原始数据”工作表中进行采集数据的录入,在“横断”、“纵断”工作表中对原始数据进行处理,转换为纬地格式。在这两个工作表中,在足够范围内的每个单元格中都有对应的公式,这就使得整个工作簿很大,占用许多资源,并且要求每个单元格中的公式必须正确,如果某一单元格中的公式有误,则计算结果就会发生错误,而这一问题,在检查时则很难发现。
虽然,在SCS中,提供了一项绘制断面图的功能,这就提供了一种对断面进行直观检查的方法,其要求的数据格式如下:
然而在每次绘制断面图时都要求用户指定文件位置及文件名,确定断面图的绘制位置。由于借助CAD的强大功能,这对于纵断面检查来说很方便;但是对于横断面来说,由于断面数太多,要用户对每个断面的数据进行一次转换,绘制时都需要交互指定一次,就显得有些繁琐。这就需要一种新的途径处理这些问题。
三、 改进的处理方法及优势
由于数据录入一般是在Excel中进行,并且提供设计的纬地格式数据一般也是Excel文件格式,而且Excel不仅仅具有一般电子表格软件的数据处理、统计分析、图表功能,还集成了VBA环境,所以使用Excel进行数据转换就成为首选的一种方式。
为了解决以上的数据处理中的不足,共进行了四项功能开发,设计了四个菜单项,对应设计了四个自定义按钮,界面如下:
在横断计算中,不但具有以前一样的横断数据转换功能,还添加了一些纠错功能。比如:当某断面数据中前面的断面点个数与后面实际输入的数据个数不同时,会自动提示断面个数不匹配,需要进行修改,并将光标指定在错误的桩号处;当数据在输入过程中,有可能在某个单元格中输入的数据有误,比如,将3.12错误输入为3..12,程序同样提示数据输入错误,需要修改,并将光标指定在错误的桩号处,以方便修改。这样就提高了横断面数据检查工作的效率,减轻了检查工作的负担。
在纵断计算中,添加了一项桩号排序自动检查功能,当输入的桩号不是按照顺序排列时,会自动弹出对话框如图:
如果单击“是”,则忽略错误,继续计算;若单击“否”,则停止计算,并将光标自动指定于错误处附近的桩号,以方便检查和修改。建议在输入桩号时不要使用“0+020”这种非数字格式,这样就不便让计算机进行自动检查,并且在程序中总会报告排序错误,弹出此对话框。如果已经按这种格式输入了,可以用Excel“编辑”菜单下的替换功能,将“+”都替换没了,再进行计算。
为了直观的检查横断面数据,需要绘制出直观的横断面图。在Excel中,提供了丰富的图表类型,选择其中的折线散点图就可以绘制出直观的横断面图。在整个程序中,共有4个工作表,其中,“Sheet1”中存放原始采集数据,“Sheet2”中为转换后的横断面纬地格式数据,“Sheet3”中存放纵断面数据,“Sheet4”中进行横断面检查,其中“Sheet4”界面如下:
其中,第一行和第二行为绘制折线散点图的数据区域,由原始采集数据“Sheet1”中对应断面的数据转化而来。在单元格“B6”中显示或输入当前要绘制的断面桩号。在“Sheet4”中设计了5个按钮,分别为
l “起始断面”:绘制“Sheet1”中的第一个断面;
l “上一段面”:绘制当前断面的上一个断面,如果已经到了起始断面,则显示警告“超出范围”;
l “下一段面”:绘制当前断面的下一个断面,如果已经到了结束断面,则显示警告“超出范围”;
l “结束断面”:绘制“Sheet1”中的最后一个断面;
l “绘制断面”:当在“B6”单元格中指定了要绘制的断面桩号,单击此按钮则绘制此桩号的横断面图,如果在“Sheet1”中没有此桩号,则显示警告“桩号未找到”。
正确绘制出的断面图如上图所示。
上面的横断检查方法使用了Excel中的折线散点图,用来处理像横断面这样的数据量少的断面很合适,如果用这种方法绘制纵断面这样数据量大的图形,由于断面图比较长,而其缩放,平移等功能有所欠缺,所以不太方便检查,如果在CAD中绘制,则借助CAD的强大功能,很好地解决这些问题。而SCS就是基于CAD开发而来的,并且在SCS中提供了一项绘制断面图的功能,只需要将纵断面数据转换为SCS需要的特定数据格式就可以了。所以在程序中编写了第四项功能:输出SCS纵断数据。由于在SCS中绘制断面图时需要用户指定断面数据的位置,所以为了方便起见,将数据文件固定设置在c盘根目录下,使用固定的文件名:“data.dat”,这样,在绘制断面图时,不用每次查找,直接输入路径及文件名“c:\data.dat”,就可以直接进行绘制了。以下为使用SCS绘制的纵断面图(局部)的效果,以及绘制断面图的菜单命令位置。
四、 结束语
虽然Office,AutoCAD等软件已经具有相当强大的功能,然而,要想使用这些软件真正适用某一领域,或让其经常完成一些重复性的工作,则必须使用其灵活的开发系统进行二次开发。
参考文献:
[1] 赵志东. Excel VBA基础入门. 北京:人民邮电出版社,2006.6
[2] 马维峰. Excel VBA应用开发从基础到实践. 北京:电子工业出版社,2006.8
[3] 希望图书创作室. 中文Visual Basic 6.0教程. 北京:宇航出版社,1999.5
相关论文