摘 要:《测量学》是测绘工程专业入门的基础课程,初学者在其学习当中会遇到大量的计算,比如说水准测量成果整理、导线测量成果整理、碎步测量成果整理等等。如何把这些繁琐的计算简单化,是当代大学生需要加强的能力。
关键词:期刊论文网,测绘工程,水准测量,大学生
一、前言
学科交叉在现在看来是一件再也普遍的不过的事情了,但是如何有效的利用自己学过的知识来处理另一门学科的问题,是我们要重视的环节。在这个大数据时代,计算机早已成为这个时代的主流,我们曾经学习过的《大学物理》、《高等数学》中的计算问题,纯手工的计算方法应该不再是当代大学生得以提倡的了,很多时候,我们需要“更快”、“更准”,那么我们就可以利用自己学过的编程语言(Visual Basic)来处理这些繁琐的计算。当然,在此基础上,需要我们比较熟练地掌握Visual Basic的各种控件和命令,只有这样我们才能达到事半功倍的效果!
二、VB编程语言在《测量学》中应用举例
此文只简单介绍Visual Basic 6.0在水准测量中的应用。根据水准路线构成的图形结构划分,大体上可以分为单一水准路线和水准网两类。单一水准路线又可分为闭合水准路线、附合水准路线、支水准路线,在这里只讨论附合水准路线这种情况。
1、附合水准路线的内业计算的步棸:
(1)水准测量内业的主要任务就是进行高差改正,因此在次之前,必须进行高差闭合差的和容许闭合差误差的计算,即fh=∑h测—(H终—H起),fh容=20√L。
(2)对于计算出来的高差闭合差进行分析,如果小于或等于容许闭合差,则进行近似平差,求得高差改正数,即Vi=-fh/∑L*Li或Vi=-fh/∑n*ni。其中∑L为水准路线的总长度,Li为每测段的长度,∑n为总的测站数,ni为每测段的测站数。
(3)高差闭合差计算完后,应满足以下条件:∑Vi=-fh。准确无误之后,改正后的高差hi改=hi+Vi和正高HA=HB+h也就随之计算出来。
2、Visual Basic 6.0编写的计算界面及相关程序
(1)Visual Basic 6.0编写的计算界面
图1 附合水准路线计算数据结果截图
(2)程序源代码
Private Sub Command1_Click()
Dim a1 As Double, a2 As Double, a3 As Double, a4 As Double, a5 As Double, a6 As Double, a7 As Double, a8 As Double, a9 As Double, a10 As Double, f1 As Integer, v As Double, a11 As Integer, a12 As Integer, a13 As Integer, a14 As Integer, a15 As Integer
a1 = Val(Text1.Text):a2 = Val(Text2.Text):a3 = Val(Text3.Text):a4 = Val(Text4.Text)
a5 = Val(Text6.Text):a6 = Val(Text7.Text):a7 = Val(Text8.Text):a8 = Val(Text9.Text)
a9 = Val(Text21.Text):a10 = Val(Text25.Text)
f1 = (a5 + a6 + a7 + a8 - (a10 - a9)) * 1000 '角度闭合差即:fh=∑h测—(H终—H起),单位是mm
If f1 > 20 * (a1 + a2 + a3 + a4) ^ (1 / 2) Or f1 < -20 * (a1 + a2 + a3 + a4) ^ (1 / 2) Then
x = MsgBox("闭合差超限", 2, 提示信息)
End If
v = (Fix(((-1 * f1 / (a1 + a2 + a3 + a4)) * 100 + 0.5)) / 100) '每公里的改正数,四舍五入保留两位小数
If v > 0 Then
a11 = Fix(v * a1 + 0.5) '改正数四舍五入取整,单位为mm
a12 = Fix(v * a2 + 0.5):a13 = Fix(v * a3 + 0.5):a14 = Fix(v * a4 + 0.5)
Else
a11 = Fix(v * a1 - 0.5):a12 = Fix(v * a2 - 0.5):a13 = Fix(v * a3 - 0.5):a14 = Fix(v * a4 - 0.5)
End If
a15 = a11 + a12 + a13 + a14 '改正数的和的相反数要与闭合差相等,即∑Vi=-fh
If v < 0 And (-1 * a15) < f1 Then Text14.Text = a14 - (f1 + a15) '消除凑整误差
If v < 0 And (-1 * a15) > f1 Then Text14.Text = a14 - (f1 + a15)
If v > 0 And (-1 * a15) < f1 Then Text14.Text = a14 - (f1 + a15)
If v > 0 And (-1 * a15) < f1 Then Text14.Text = a14 - (f1 + a15)
a15 = a11 + a12 + a13 + Val(Text14.Text) '消除凑整误差后的改正数之和
Text16.Text = a11 / 1000 + a5 '改正后的高差,单位要统一为m
Text17.Text = a12 / 1000 + a6:Text18.Text = a13 / 1000 + a7
Text19.Text = Val(Text14.Text) / 1000 + a8:Text11.Text = a11
Text12.Text = a12:Text13.Text = a13:Text15.Text = a15
Text20.Text = Val(Text16.Text) + Val(Text17.Text) + Val(Text18.Text) + Val(Text19.Text)
Text22.Text = a9 + Val(Text16.Text) '通过高差改正后的值与已知点的高程之和算出未知点的高程
Text23.Text = Val(Text22.Text) + Val(Text17.Text)
Text24.Text = Val(Text23.Text) + Val(Text18.Text):Text5.Text = a1 + a2 + a3 + a4
Text10.Text = a6 + a7 + a8 + a5
End Sub
三、结论
1、从运行结果来看,此程序是正确的。
2、相比于纯手工计算,这个程序相对来说提高了效率,达到了“更快”、“更准”的要求。
3、作为当代大学生,我们要做到举一隅能与三隅反,不要只仅仅局限于课本上的方法,我们要尝试着用新的方法、新的理念来解决一些问题,即使我们的方法不是最优,但是我们可以肯定的说:“我们尝试过!”
参考文献:
[1] 李玉宝.测量学.西南交通大学出版社
[2] 黎明.Visual basic程序设计基础.四川科学技术出版社