刘 科,廖中平,余泽彬(1.道路灾变防治及交通安全教育部工程研究中心,湖南长沙 410004; .长沙理工大学交通运输工程学院,湖南长沙 410004)
Excel VBA在导线近似平差计算中的应用*
刘科1,2,廖中平1,2,余泽彬2
(1.道路灾变防治及交通安全教育部工程研究中心,湖南长沙410004; 2.长沙理工大学交通运输工程学院,湖南长沙410004)
摘要:传统导线平差计算过程繁琐,且易受人为因素影响。利用Excel VBA编程进行导线自动平差计算,平差结果包括自动生成的CASS展点文件和平差报告。当观测数据存在粗差,可进行一个转角或一条导线边粗差的自动查找。以闭合导线平差计算为例,本程序可快速检查数据且计算出未知点坐标。
关键词:导线平差; Excel VBA;数据检查; CASS
导线内业平差是工程勘测中常见的一项数据处理工作,一般测绘人员借助科学计算器按相应的导线平差计算表格进行分步计算,过程较繁琐。当测区面积较大,待计算导线数较多时,计算量就成倍增加。若导线平差出错,数据检查比较繁琐,需重新输入数据[1-3]。Microsoft Excel表格界面友好、清晰、直观,同时内置大量公式与函数,使其具有强大的计算功能。将Excel特性与传统的导线近似平差结合,计算将非常简单[4-5]。本文在计算导线点坐标的基础上,增加了导线测量数据错误检查功能,进一步完善导线计算过程[6]。其主要包括表格的制作、坐标计算及测量数据错误检查三个部分。
Excel导线平差计算表格设计,采取与传统导线平差计算表格一致。计算表格的大小,可根据计算的需要而改变,使用者只需选择导线类型和输入未知点个数,程序就会自动生成相应的导线平差计算表格[7]。
表格的自动生成主要调用Excel VBA中常用的几个函数,如单元格选定函数cell、单元格合并函数merge、边框加粗函数border等[8]。
导线可分为闭合导线、附合导线和支导线,其中支导线只有必要的起始数据,缺少对观测数据的检核[9]。3种导线计算步骤虽不完全相同,但计算原理基本一致。以附合导线平差计算过程为例,其计算原理如下:附合导线计算的起算数据一般包括4个已知点坐标及待测点观测角度与边长[10]。本文中起算数据及计算表格,如图1所示。
2.1角度闭合差与方位角的计算附合导线角度闭合差的计算公式:
Σβ为各个观测角(右角)之和,Σβ为依据给定的方位角计算得出,计算公式:
图1 附合导线计算表格Fig.1 Table of connecting traverse calculation
根据测角的个数进行反号平均分配,得出改正后角度。以计算各边方位角为例,其程序代码如下[11]:
……
For i =1 To n + 1
Cells(2 * i + 9,9)= Fix(fwj2)?
Cells(2 * i + 9,10)= Fix(fwj2 * 60-Cells(2 * i + 9,9)* 60)
Cells(2 * i + 9,11)= Format(fwj2 * 3600-Cells(2 * i + 9,9)* 3600-Cells(2 * i + 9,10)* 60,"#.##")
……
本段代码调用for循环语句计算各边方位角,使用fix函数取整,format格式输出函数将计算结果以度分秒形式显示,并对秒进行小数点后两位有效数的保留。
2.2坐标增量的计算及其改正
在计算各边方位角后,便可根据距离计算出各点坐标增量,其计算公式如下:
坐标增量计算代码如下:
......
For i =1 To n + 1
Cells(2 * i + 9,13)= Format(Cells(2 * i + 9,12)* Cos(fwj2 / 180 * 3.1415926),"#.####")
Cells(2 * i + 9,14)= Format(Cells(2 * i + 9,12)* Sin(fwj2 / 180 * 3.1415926),"#.####")
Next i
......
此段代码同样调用for循环语句,根据计算公式,使用格式输出函数format对结果进行小数点后四位有效数的保留。坐标闭合差及坐标增量分配计算公式如下:
式中:ΣΔX测、ΣΔY测为各边纵、横坐标实际增量代数和;ΣΔX理、ΣΔY理为各边纵、横坐标理论增量代数和;ΔXi、ΔYi为坐标增量改正值,其与边长成正比;ΣD为各导线边长之和。
2.3计算点的坐标及粗差判断
由一个已知点的坐标(X,Y),根据Xi+1= Xi+ΔXi,Yi+1= Yi+ΔYi可依次计算得到其它点的坐标。在导线平差计算完后,程序会根据事先给定的fβ的限差范围和相对闭合差大小判断外业数据是否合格,这也是导线平差的目的之一。其中相对闭合差计算公式如下:
角度闭合差或相对闭合差是否超限,程序将在辅助计算栏中给出结果,其部分代码如下:
……
If fxy-(Val(TextBox1.Text))>0 And Abs(jdc)-Val(TextBox2.Text)*(n + 1)^ 0.5<0 Then
Cells(2 * n + 19,2)= "相对闭合差和角度闭合差均符合精度要求观测数据合格"
……
ElseIf fxy-(Val(TextBox1.Text))<0 And Abs(jdc)-Val(TextBox2.Text)*(n + 1)^ 0.5<0 Then
Cells(2 * n + 19,2)= "相对闭合差超限,角度闭合差合格观测数据不合格"
ElseIf fxy-(Val(TextBox1.Text))>0 And Abs(jdc)-Val(TextBox2.Text)*(n + 1)^ 0.5>0 Then
Cells(2 * n + 19,2)= "相对闭合差合格,角度闭合差超限观测数据不合格"
Else
Cells(2 * n + 19,2)= "相对闭合差和角度闭合差均超限
观测数据不合格"
……
此段代码使用if选择语句,根据事先设置的限差进行结果判定,再调用单元格函数cell在相应位置显示判定结果。附合导线计算成果,见图2。
2.4生成平差报告及CASS展点文件
Excel根据测量数据计算出各未知点的坐标后,将以文档形式予以保存,便于查询和使用。将计算的点位坐标存入文档,可调用output和print函数写入,其格式:open文件名for output/ print as #文件号,后使用print函数进行写入。其可将数据写入word与txt中[12]。平差报告,见图3。
图2 附合导线计算成果表Fig.2 Calculation results of connecting traverse
图3 平差报告表Fig.3 Report of adjustment
为便于点在电子地图中展绘,增加生成CASS展点文件功能,扩展平差成果数据的实用性。CASS软件默认dat文件数据格式为:点号,,纵坐标,横坐标,高程[13]。由于只是导线平差,默认高程为零。生成dat文件显示内容,如图4所示。
图4 CASS展点文件Fig.4 Point file for CASS
在导线平差中,如果闭合差超限,则说明导线外业测量中测角或测边观测数据不合格,应进行重测。若能事先分析出错的导线边或水平角,则可避免盲目的重测工作[9]。
3.1一个角度粗差的查找方法
当导线角度闭合差超限,且仅有一个转角水平角出错时,其查找方法为:分别从导线两端的已知点坐标、方位角算起,按支导线计算各点坐标,得两套坐标。如果某点坐标两次算得的坐标值很接近,则应检查该角。如图5所示,则应先检查3点处的角度。闭合导线查找的方法类似[9]。
图5 附合导线中一个角测错Fig.5 A wrong angle in connecting traverse network measurement
3.2一条导线边粗差的查找方法
当导线全长相对闭合差超限,且仅有一条边测错时,其检查方法为:先求全长闭合差的方向,其坐标方位角的正切公式为:
将此方位角与各边的方位角相比较,若与之平行或大致平行的边,则应检查该边[9-10]。如图6所示,则应先检查23这条边。附合导线的查找方法类似。
参考文献以闭合导线为例([10]),已知DZ点坐标和相应的观测数据,其计算结果,见表1。
图6 闭合导线中一条边测错Fig.6 A wrong side in closed traverse network measurement
图7 测角超限误差检查Fig.7 Error check of overrunning angles
表1 算例计算结果Tab.1 Result of example
如图7所示,将DZ测站处的观测角改动以后,角度闭合差超限,程序将自动查出DZ测站数据超限。
利用Excel VBA编写导线近似平差计算程序,生成CASS展点文件,并对导线转角或导线边存在一个粗差进行数据自动检查与查找,可大大简化和方便全站仪外业导线测量与平差计算工作,同时平差成果与CASS软件数据文件格式保持一致,便于导线平差成果的应用。
[1]云刚.用Excel处理导线计算问题[J].西部探矿工程,2014,26(3):75-76.
[2]姬根杰.Excel VBA编程在导线测量中的应用[J].山西建筑,2008,34(1):367-368.
[3]董云.在Excel表中进行单一导线简易平差的方法[J].地矿测绘,2004,20(4):21-25.
[4]向继平,骆忠爱.Excel在导线平差计算中的应用[J].矿山测量,2012(6):32-34.
[5]周海生,徐春风.Excel在工程测量数据处理中的应用[J].大科技,2014(12):251-252.
[6]王旭华.查找导线测量错误方法的进一步探讨[J].大连大学学报,2002,23(6):68-72.
[7]阳德胜.利用VB编程控制Excel处理测量数据[J].城市勘测,2007(4):96-99.
[8]何非,叶萃娟.Excel VBA高效办公从入门到精通[M].北京:中国青年出版社,2006.
[9]顾孝烈,鲍峰,程效军.测量学[M].2版.上海:同济大学出版社,1990:169-170.
[10]张序.测量学[M].2版.南京:东南大学出版社,2012:128-136.
[11]林梓鹏.Excel电子表格在测绘中的应用[J].城市勘测,2009(1):137-141.
[12]龚沛曾,杨志强,陆蔚民.Visual Basic程序设计教程[M].3版.北京:高等教育出版社,2011:192-202.
[13]孙艳崇.坐标数据在CASS中展点的注意事项[J].甘肃科技纵横,2014,43(2):32-35.
Application of Excel VBA in Approximate Adjustment of Traverse
LIU Ke1,2,LIAO Zhong-ping1,2,YU Ze-bin2
(1.Engineering Research Center of Catastrophic Prophylaxis and Treatment of Road&Traffic Safety,Ministry of Education,Changsha Hunan 410004,China; 2.School of Traffic and Transportation Engineering,Changsha University of Science and Technology,Changsha Hunan 410004,China)
Abstract:The process of traditional adjustment calculation of traverse survey is not only tedious,but also easy to be influenced by human factors.We can utilize the development tools VBA in the Excel to program to finish the process automatically.The adjustment results include the file of points for CASS and the report.When the observed data includes the gross errors,the program can be applied to find out the mistake on the condition that only one angle or side contains gross error.By taking the adjustment calculation of closed traverse for an example,we can rapidly check the data and can calculate the coordinate of unknown points by using the program.
Key words:traverse adjustment; Excel VBA; data check; CASS
作者简介:刘科(1989~),男,湖北仙桃人,硕士研究生,主要研究方向:三维激光扫描以及外业数据处理。
基金项目:道路灾变防治及交通安全教育部工程研究中心开发基金(kfj110307)
中图分类号:P 221+.4
文献标识码:B
文章编号:1007-9394(2015)02-0031-04 *
收稿日期:2015-03-21