基于EXCEL的水准网间接平差应用
2018-03-26李杰谭荣建
李杰 谭荣建
摘要:
在测量平差计算中,现有的各种平差软件编制过程一般均为隐含,遇到特殊平差问题不便于软件自身的优化处理和实际应用。运用Excel的VBA编辑器,基于优化处理的间接平差数学模型编制程序进行数据处理,阐述了运用Excel进行水准网间接平差的原理和方法。与专业平差软件计算结果进行对比分析,结果表明:该方法满足精度要求,适用于测量平差计算,克服了专业软件在实际平差应用中的不足,更具实用性。
关键词:
ExcelVBA;水准网;间接平差;数据处理
DOIDOI:10.11907/rjdk.173054
中图分类号:TP319
文献标识码:A文章编号文章编号:16727800(2018)003017604
英文摘要Abstract:In the adjustment of surveying calculation, the compilation process of all kinds of surveying adjustment software is generally implicit, and it is not convenient for the optimization processing and practical application of the software itself when the special adjustment of surveying problem is encountered. The mathematical model of leveling network adjustment of indirect observations based on optimized processing is compiled by using VBA editor of Excel, and its superiority is proved; Combined with examples calculation, expounds the principle and method of leveling network adjustment of indirect observations by using excel; and the calculated results were compared with the professional software. The results show that the result of this method meets the requirement of precision. This method can be applied to surveying adjustment, and it overcomes the shortcomings of professional software in application of actual surveying adjustment, and is more practical.
英文關键词Key Words:ExcelVBA; leveling network; adjustment of indirect observations; data processing
0引言
测量平差计算工作主要是矩阵转置、求逆、相乘等[1]。因此,可利用不同的编程语言如VB、 VC++、 Delphi、C++ Builder甚至 Quick Basic、 PC-E500,应运而生了各式各样的测量平差计算软件,它们都有一个共同点:要设计一套原始数据文件格式,让程序获得水准网观测数据,但一些软件使用不便,解决的问题也较单一。因此,需要设计一种使用方便灵活,且易学易懂便于操作的数据处理平台。Excel 宏是一套 Visual Basic for Application ,简称 VBA,由 Excel提供一套 COM 接口,高级用户可用 VB 语法控制 Excel,而且Excel中自带平差计算用到的一些函数,在程序编写时可直接运用,非常方便[24]。
1基本原理
水准网间接平差是以待定点的高程平差值作为未知参数,确定合理的近似值,列出测段高差观测值的误差方程,基于最小二乘原则求解未知参数、观测值的平差值。水准网间接平差模型如下[56]:
误差方程:
Vn×1=Bn×tX⌒t×1-ln×1(1)
平差准则:
VT1×nPn×nVn×1=min(2)
法方程:
NBBt×tX⌒t×1-Wt×1=0(3)
式(3)中:NBB=BTPB, W =BTPl
因为所选的t个参数是独立的,所以系数阵NBB为满秩,即R(NBB)= t, X⌒有唯一解,其解为:
X⌒=N\+\{-1\}BBW=(BTPB)-1BTPl(4)
参数的平差值:
X⌒=X0+X⌒(5)
高差观测值的平差值:
L⌒=L+v(6)
单位权中误差:
σ⌒=VTPVn-t(7)
未知数函数的中误差:
σ⌒X⌒i=σ⌒QX⌒iX⌒i(8)
式(8)中:QX⌒iX⌒i是参数向量X⌒=[X⌒1X⌒2…X⌒t]T的协因数阵,即
QX⌒X⌒=QX⌒1X⌒1QX⌒1X⌒2…QX⌒1X⌒tQX⌒2X⌒1QX⌒2X⌒2…QX⌒2X⌒t
QX⌒tX⌒1QX⌒tX⌒1…QX⌒tX⌒t(9)
2程序整体设计
水准网间接平差的解算程序设计流程为:①已知数据和观测数据的信息提取及输入;②每个未知参数近似高程X0i的计算;③组成法方程,计算高程平差值及相应的中误差[78]。根据上述模型编写程序,所得到的结果直接为所求参数的估值。
2.1Excel文件設计
利用Excel VBA进行间接平差编程计算时,高程已知点、高程未知点、高差观测值这3种数据需要从水准网中获取。根据所读取的3种数据在Excel中设计3张表,分别为“高程已知点表”、“高程未知点表”、“高差观测值表”。将原始数据确认无误的填入上述已经设定好格式的3张表中。对表中的已知高程点的点名和高程值、未知高程点的点号和点名、每一测段的高差观测值、起始点和终止点点号进行设定,在各点名和点号之间进行匹配,以便更准确地进行数据读取。程序编写应与所提取数据在Excel中的写入格式严格对应起来。在计算高程平差值的误差时,首先需要计算出QX⌒X⌒,因此增加了“协因数阵表”。本文的程序设计和实现都严格依靠3张表中数据的填写格式。程序解算出结果后,需要把结果写入对应的表格中,而写入表格中的位置由用户自己设定。通过创建宏,使用“窗体”工具栏,在“高差观测值”工作表中添加“平差”按钮控件,并为其指定宏,用户则通过单击该控件并根据相应提示进行操作,所得结果按预定位置写入工作表中。
2.2未知点近似高程计算
根据表中的信息,读取未知点的点号,计算每个未知点高程的近似值X0。
(1)对水准网中每一测段的起点高程、终点高程、点号及高差观测值扫描读取,如其中的一个高程点为已知或已获取近似高程,则另一个高程点为未知。对未知点的高程进行推算,将推算出来的未知点高程标记为“已获得近似高程”(若是起点和终点的高程均为已知点则说明数据输入错误)。
(2)对水准网进行一次扫描,读取未知点近似高程不能被完全推算出来的情况,循环扫描,直到一次循环没有计算出任何一点近似高程,则表示完成高程未知点读取。
(3)进行多次扫描后,仍有未知点的近似高程未能计算出来,这说明水准网中该未知点与已知高程点没有联系,在水准网中这是不存在的。如果此情况发生,说明数据输入错误。
根据上述3点可知:“高差观测值表”中,观测值的排列顺序严重影响着未知点近似高程的计算,即如果观测值输入顺序有误,则近似高程X0将发生改变,而平差结果是否正确将无法判断。在间接平差中,X⌒=(BTPB)-1BTPl,显然最终的平差值与 B、 l、P、 L有关,而与近似值X0无关。因此,本文在进行程序设计时直接把X0全部设置为零,不再进行X0的计算。
2.3工作表中数据信息读取
观测数据输入后,程序首先读取工作表中已知点名、高程值、未知点名。对于未知点高程的获取,基于上述4点说明,在本文编写的程序中赋初值为0。获得已知点数、未知点数及总点数,从而确定误差方程个数。然后程序统计高差观测数和读取高差观测值,列出误差方程。与此同时,设定每一段高差观测值起点和终点名称读取的正确性判断,及确认起点和终点是已知点或未知点。本文实例中给出的是每一测段的长度,因此程序设定定权方式为:P=1/Si(Si 为相应测段的长度)。
2.4间接平差程序实现
平差过程包括:法方程的组成、求NBB的逆矩阵、求解平差值、高程平差值中误差、协因数阵、单位权中误差[9]。大部分解算过程都是在B(系数矩阵)、l、P(权阵)间进行矩阵相乘、求逆和求转置等工作,但最重要的是系数矩阵B的求解。在平差工作中,l的元素值为观测值与近似值的差值,而法方程系数矩阵中,元素值是根据每段高差观测值对应的起点和终点编号,以及测量时水准路线的前进方向,确定每段高差所列出的误差方程中未知数的系数值[10],这些系数值只有1、-1、0三种。然而在实际计算过程中,当水准网中高程未知点和观测数的个数很多时,系数矩阵B中的元素值大多数都为0,因此在编写法方程计算程序时,不用单独生成B和W两个矩阵,而是通过程序读取3张工作表中的观测数、未知点数、已知点数、起点序号、终点序号等信息,作为系数值的判断依据,直接组成法方程并进行计算。
间接平差中几个主要程序段代码如下:
'组成法方程
Dim N() As Double
ReDim N(WZDS, WZDS)
Dim U() As Double
ReDim U(GCS)
Dim w As Double
Dim f As Integer
Dim t As Integer
Dim iFlag As Integer
For i = 1 To GCS
f = gc(i).Fidx
t = gc(i).Tidx
iFlag = 0
If f > YZDS Then
'B(i, f - YZDS) = -1
iFlag = iFlag + 1
End If
If t > YZDS Then
'B(i, t - YZDS) = 1
iFlag = iFlag + 2
End If
w = pts(t).H - pts(f).H - gc(i).HDiff
Select Case iFlag
Case 1
N(f - YZDS, f - YZDS) = N(f - YZDS, f - YZDS) + gc(i).P
U(f - YZDS) = U(f - YZDS) - gc(i).P * w
Case 2
N(t - YZDS, t - YZDS) = N(t - YZDS, t - YZDS) + gc(i).P
U(t - YZDS) = U(t - YZDS) + gc(i).P * w
Case 3
N(f - YZDS, f - YZDS) = N(f - YZDS, f - YZDS) + gc(i).P
N(t - YZDS, t - YZDS) = N(t - YZDS, t - YZDS) + gc(i).P
N(f - YZDS, t - YZDS) = N(f - YZDS, t - YZDS) - gc(i).P
N(t - YZDS, f - YZDS) = N(t - YZDS, f - YZDS) - gc(i).P
U(f - YZDS) = U(f - YZDS) - gc(i).P * w
U(t - YZDS) = U(t - YZDS) + gc(i).P * w
End Select
Next
求 N 的逆阵N-1
Dim Q() As Double
ReDim Q(WZDS, WZDS)
Dim tt As Double
Dim j As Integer
Dim k As Integer
For i = 1 To WZDS
Q(i, i) = 1#
Next
For k = 1 To WZDS
tt = 1# / N(k, k)
For j = k + 1 To WZDS
N(k, j) = N(k, j) * tt
Next
For j = 1 To WZDS
Q(k, j) = Q(k, j) * tt
Next
For i = 1 To WZDS
If i <> k Then
tt = -N(i, k)
For j = k + 1 To WZDS
N(i, j) = N(i, j) + N(k, j) * tt
Next
For j = 1 To WZDS
Q(i, j) = Q(i, j) + Q(k, j) * tt
Next
End If
Next
Next
求解平差值
For i = 1 To WZDS
tt = 0#
For j = 1 To WZDS
tt = tt - Q(i, j) * U(j)
Next
pts(i + YZDS).H = tt
Next
3实例验证
为检验程序的正确性,本文采用文献[11]中的数据作为实验数据。水准路线如图1所示,已知点A的高程为HA=11.100m, P1、P2、P3、P4、P5、P6、P7、P8为未知高程点,观测高差及路线长度见表1
将水准网中的数据分别输入3张表中,点击高差观测值表中的“平差”按钮,得到平差结果如图2所示。
对平差结果进行检验以验证平差结果的可靠性。把上述水准网中的数据输入南方平差易2002软件中进行解算,得出平差结果,再将本文的平差结果、文献[11]中的平差结果和运用南方平差易解算所得的平差结果进行对比,如表2所示。
4结语
通过表2对比结果可以看出,在同一个水准网平差中,本文程序解算的结果与文献中的结果及专业软件平差结果之间的差值为1mm以内,充分说明本文程序在运行中达到了预期值,所得的结果满足水准测量精度要求[12]。本文程序根据水准网间接平差原理和解算步骤进行设计,在程序编写过程中省略了一些平差步骤,提高了程序编写的效率,适合测量初学者理解和掌握间接平差思路,解决相关问题。与此同时,运用Excel进行程序设计,可克服一些专业软件程序代码隐含的缺点,根据不同需求对程序进行优化处理,更具实用性。
参考文献参考文献:
[1]李征航,黄劲松.GPS测量与数据处理[M].武汉:武汉大学出版社,2005:156165.
[2]李辉,郝艳芬.Excel 2003VBA办公应用[M].北京:人民邮电出版社,2006.
[3]马騄.新概念Excel 2003教程[M].北京:科学出版社,2006.
[4]宋毅,王驰,张艳华.Excel实训教程[M].北京:清华大学出版社,2011.
[5]武汉大学测绘学院测量平差学科组.误差理论与测量平差基础[M].武汉:武汉大学出版社,2005.
[6]靳祥升.測量平差[M].第2版.郑州:黄河水利出版社,2010.
[7]刘翔禹.基于ExcelVBA的水准网间接平差的应用[J].江西测绘,2015(2):1620.
[8]胡远新,赵奋军.MATLAB软件在测量平差解算中的应用[J].采矿技术,2009(2):98100.
[9]胡奇.水准网测量平差软件设计与开发[D].淮南:安徽理工大学,2012.
[10]周长江,顾和和.基于VB环境下水准网平差程序设计研究[J].现代测绘,2012(1):1214.
[11]曾绍炳.基于Excel的条件平差解算[J].东华理工学院学报,2007(1):5154.
[12]梁先兵,李兆雄.利用GPS拟合方法代替四等水准的可行性分析[J].地理空间信息,2016(3):8393.
责任编辑(责任编辑:杜能钢)