谈秋英 应楠欣 阮晓光
摘要:Excel软件作为一款被广泛应用的数据处理办公软件,兼有函数计算、程序设计、数据库编辑及调用等二次开发功能。公路勘测作业数据的处理专业性强、数学模型相对复杂,文章以公路勘测内外业为例,充分利用Excel计算功能和VBA编程功能,论述了Excel在公路勘测实践教学工作中的具体方法和注意事项。通过笔者所在单位教学环节的实践,该方法适用于解决公路勘测工作中数据计算量大、重复性强的实际问题,可以为相关课程课间实训、课程实习提供思路。
关键词:公路勘测 Excel 编程 函数
中图分类号:U412.2;G421
Abstract:As a widely used data processing office software, Excel software has secondary development functions such as function calculation, programming, and database editing and calling. The processing of highway survey operation data is highly professional and the mathematical model is relatively complex. Taking the internal and external business of highway survey as an example, making full use of Excel calculation function and VBA programming function, this paper introduces the specific methods and precautions of Excel in practical teaching of highway survey. Through the practice of teaching links in the authors unit, this method is suitable for solving the practical problems of large amount of data calculation and strong repeatability in highway survey work, and can provide ideas for the inter-class training and course practice of relevant courses.
Key Words:Highway survey;Excel;Programming;Function;
科学技术的不断发展正在推动着教育领域的深刻变化。根据该要求“国家中长期教育改革和发展规划纲要(2010-2020年)”[1],人才培养必须注重加强实践教学,并且必须使用科学技术的应用为重要手段提高教学质量[2]。实践教学是教育技术的一个组成部分,是培养学生运用科学知识和方法解决实际问题的能力。公路勘测工程应用与实践教学中会涉及很多的函数公式,采用传统的人工计算方式不仅费时费力,而且对于所学知识点的运用处理也不够灵活。由于公路勘测工程应用与实践教学路线中交点个数多,曲线也多,线路坐标计算手工计算繁重,费时费力又易出错,满足不了公路勘测规范快速准确放样要求,工作中通常采用编程计算,编程可以解决这种复杂的坐标计算。Excel作为一个对外开放的软件平台,兼容VBA面向对象的编程语言,支持源数据跨表格同步更新与二次开发[3-5],用户可按需编写适当的编程程序,避免了重复、繁琐的数据处理过程。因此,借助Excel强大的计算功能和VBA编程功能,可以设计出公路勘测程序项目,将该方法用于公路勘测实训教学优势明显,主要表现为如下方面。
(1)VBA面向对象的编程语言,语法简单,易于掌握[6]。根据计算内容、要求和目的,通过基本的VBA程序语言和短代码,即可实现复杂的计算功能。
(2)通过Excel二次开发,可大幅提升测量内外业效率,降低劳动强度。传统手工计算,既繁琐又易出错,该方法通过计算机自动判断、计算,能够保证计算的准确性,提高工作效率。
(3)Excel VBA编程思想用于公路勘测实践教学,可提升过程化考核可操作性。公路勘测实训中数据核对、桩号校验、精度检核等工作繁琐复杂,例如计算公式涉及频繁的角度换算,采用Excel VBA进行角度转换方法编程,可以简化Excel计算公式,便于直观地进行单元格数据核对[7-8]。
本文面向公路勘测工程应用,以导线测量及线路平面坐标计算涉及到的数学模型为例,详细阐述程序设计在公路勘测实践教学中的应用思路。
1 公路勘测数据计算的数学模型
1.1导线测量外业计算
导线测量外业计算的公式如式(1)所示。
2 程序编制
2.1 基本思路及注意事项
2.1.1 基本思路
在办公软件Excel的表格中建立若干个工作表,利用Excel的自定义函数自由地进行二次开发。计算步骤如下。
(1)选择“开发工具”菜单中选择“VB编辑器”或按“Alt+F11”快捷键,打开VB编辑器窗口,在窗口中执行“插入→模块”菜单命令,插入3个模块。
(2)在Excel里建立4个工作表,分别命名为导线测量外业计算表、交点坐标计算表、直曲转角表、逐桩坐标计算表。
(3)在对应的表格中插入函数编辑所需的公式。例如:“导线测量外业计算表”E7=MOD(RtoD(DtoR(D8)-DtoR(D7)+DtoR(360)),360),F7=MOD(RtoD(DtoR($E$7)/2+DtoR($E$9)/2),360),G7=dtos(RtoD(DtoR(E7)-DtoR(E9)));“逐樁坐标表”D6=$D$4+(C6-$C$4)*COS(DtoR(直、曲转角表!$S$7)),D列坐标验证公式I6=直、曲转角表!B8+直、曲转角表!I8*COS(DtoR(直、曲转角表!S7)+DtoR(180))。
2.1.2 注意事项
(1)程序自身的可读性问题:为了分别进行角度与弧度之间的转换,以及角度之间大单位与小单元之间的转换,特设置若干个子程序,以保证自身的可读性和编辑思维的连续性。
(2)数值计算精度:现在的电脑运行速度快和计算程序是比较小的,所以没有必要考虑运行速度和容量的程序。中间计算应采取尽可能多的小数位(如编程中π的取值到小数点后14位),以保证计算结果的精度。
(3)坐标方位角判断问题:计算方位角α需要先确定象限角,然后再选择是处于一、二、三、四哪个象限,最后转换成方位角。
(4)里程的表示与桩距的计算设置问题:线路工程中,习惯用“K0+000.000”里程方式表示桩号,在程序中要作特定设置,以便参与表格中的计算。
2.2 核心代码
2.2.1 模块1代码
模块1代码如下,其中“#”后为程序代码注释。
Public Const pi = 3.14159265358979
#定义函数π的数值
Public Function DtoR(n As Double)
#定义函数名字DtoR,n为参数双精度变量
Dim S As Double, D As Double, F As Double, M As Double
#创建变量S、D、F、M
S = Sgn(n)
#返回一个整型变量值,并指出参数n的正负,并赋值于S
n = Abs(n) + 0.00000001
#求整数n的绝对值加上微小值
D = Int(n)
#度值
F = Int((n - D) * 100)
#分值
M = (n - D - F / 100) * 10000
#秒值
DtoR = (D + F / 60 + M / 3600) * S * pi / 180
#将数值转化为弧度
End Function
#结束运行
2.2.2 模块2代码
模块2代码如下:
Public Const pi = 3.14159265358979
Public Function RtoD(n As Double)
#定义函数名称RtoD
Dim S As Double, D As Double, F As Double, M As Double
S = Sgn(n)
n = Abs(n) * 180 / pi
#求整数n的绝对值再转化为60进制角度值
D = Int(n)
#得到度值
F = Int((n - D) * 60)
#得到分值
M = Round((n - D - F / 60) * 3600, 0)
#求四舍五入后取整数的秒值
If M = 60 Then M = 0 F = F + 1 Else M = M F = F End If
#设置为度分秒格式,60秒等于1分
If F = 60 Then D = D + 1 F = 0 Else D = DF = F End If
#设置为度分秒格式,60分等于1度
RtoD = (D + F / 100 + M / 10000) * S
#弧度转化为60进制角度
End Function
2.2.3 模块3代码
模块3代码如下:
Public Function DtoS(n As Double)
#定义函数名称DtoS
Dim S As Double, D As Double, F As Double, M As Double
S = Sgn(n)
n = Abs(n) + 0.00000001
D = Int(n)
F = Int((n - D) * 100)
M = (n - D - F / 100) * 10000
DtoS = (D * 3600 + F * 60 + M) * S
#角度制中度分转化为秒
End Function
通过以上设计,定义DtoR、RtoD、DtoS这3个函数,以此解决60进制角度与Excel默认弧度制之间相互转换的问题。
3 应用案例
按照浙江公路技师学院测绘工程、公路施工与养护等专业培养方案,开设108个学时(包括48个实践学时)的《公路勘测技术》核心课程,将上述程序设计方案应用到公路勘测实践教学中,以验证该方法的可行性和可靠性。
3.1 项目概括
选一片场地利用三联架法(高精度角度测量,测距误差小,导线的高精度测量)安置仪器进行观测导线,要求點与点之间互相通视。按照顺时针方向、用测回法完成一个附合导线的右角观测和边长观测。已知数据:QD(545.966,824.761)、JD1(523.482,827.699)、JD5(556.016,761.889)、ZD(596.252,757.054),外业数据如图1所示。
3.2 采用的仪器设备
1台测角精度2″级的全站仪、2个三棱镜组、3个脚架(以上设备仪器需检定部门检定合格使用)。
3.3 精度要求
角度测量上、下半测回较差不得超过±40″,边长采用单向观测。
3.4 成果展示
导线测量外业数据输入界面如图2所示,该程序基于外业观测的数据可以自动计算出交点坐标(图3)、直曲线及转角(图4)、逐桩坐标(表1),根据逐桩坐标可以快速地在AutoCAD软件中绘制设计线路的平面图,如图5所示。
3.5 其他注意事项
(1)为了审核逐桩坐标是否正确,采用了手工计算进行复核,最终结果显示误差值在限差范围内,外业观测数据均满足精度要求。
(2)在“导线测量外业计算设计界面”D7~D26中按“度.分分秒秒”格式输入外业观测角值,在I7~I30中输入导线边长;在“交点坐标计算表”T5~U8中输入起始边已知点坐标;在“直曲转角表”E7中输入起点桩号,L9~L18中输入圆曲线半径;在“逐桩坐标计算表”中输入加密中桩里程。
(3)在内业计算中,计算出所有中桩坐标后,到现场把各中桩在实地放样出来,是后续的水准抄平的前沿工作。中线的放样工作是运用全站仪坐标测设的原理进行的。重要的测量前必须认真做好控制点位选取和埋设,确保导线相关的精度满足规范要求。千万千万不能粗心大意,否则,将造成重大的测量事故。
4 结语
本文针对公路勘测内外业实践教学工作中数据处理实际需求,以实践教学环节为例,重点阐述了Excel计算功能和VBA编程功能在公路勘测实践教学工作中的具体方法和注意事项,为相关课程课间实训、课程实习提供了思路。Excel VBA编程思想在公路勘测实训教学中应用本身的意义不仅在于提高作业水平,缩短内业计算时间,更重要的是使学生掌握普遍原理的基础上充分认识和使用VBA的编程功能。以问题为导向,让学生对学习编程过程所遇到的问题加以思考和巩固,并自主设计和优化解决问题的方案。在提高工作效率、保证数据有效性的基础上,促进公路勘测相关专业第一课堂“理实结合”,提升教学效果。近年来,虚拟仿真教学在创新实践教学方法、模式及体系方面有了长足进步,如数字测图虚拟仿真教学系统。在疫情防控常态化背景下,按照国家中长期和长期教育改革和发展规划纲要(2010-2020年)要求,集成Excel VBA程序设计的虚拟仿真教学系统,必将成为提升实践教学的重要手段和研究方向。
参考文献
[1] 顾明远.学习和解读《国家中长期教育改革和发展规划纲要(2010-2020)》[J].高等教育研究,2010(7):1-6.
[2] 李平.推进虚拟现实技术应用 提高高校教育教学质量[J].实验室研究与探索,2018,37(1):1-4.
[3] 唐娟.利用Excel VBA实现高职学生考证信息的统计[J].科技资讯,2017,15(28):11-12.
[4] 党晓晶.Excel辅助测量平差课程教学[J].科技创新导报,2019,16(10):219-220.
[5] 谢江伟,贾云朋,孙青龙.Excel VBA自定义函数批量计算隧道线路坐标正算方法[J].建筑技术,2020,51(7):772-775.
[6] 冷继全.地籍测量面积计算与统计程序设计与实现[J].科技创新导报,2018,15(21):18-19.
[7] 吴琦璇,谢晓莉.道路勘测设计实践环节批量量化考核方法[J].地理空间信息,2022,20(1):149-152.
[8] 冷亮.融合Excel的测量计算课程建设及實践[J].辽宁高职学报,2020,22(6):56-58,67.
作者简介:谈秋英(1990—),女,本科,助理讲师,研究方向为测绘地理信息专业的教育与研究。
应楠欣(1998—),女,本科,助理讲师,研究方向为公路施工与养护专业的教育与研究。