基于Matrix VB与Excel VBA的监测网水准基点稳定性检验
2015-04-10邱利群胡友健徐文辉刘海鹏
邱利群,胡友健,赵 雷,徐文辉,刘海鹏
(1.中国地质大学(武汉) 信息工程学院,湖北 武汉 430074)
基于Matrix VB与Excel VBA的监测网水准基点稳定性检验
邱利群1,胡友健1,赵 雷1,徐文辉1,刘海鹏1
(1.中国地质大学(武汉) 信息工程学院,湖北 武汉 430074)
介绍了平均间隙法检验基准点稳定性的原理,并结合实例,利用Matrix VB与Excel VBA编写了一个水准基点稳定性检验程序。结果表明,基于Matrix VB与Excel VBA的平均间隙法在水准基点稳定性检验中具有较好的实用性。
Matrix VB;Excel VBA;平均间隙法;水准基点稳定性
Matrix VB是由第三方(Mathtools公司)提供的COM组件,包含了大量与Matlab相似的函数与调用语法,可以加强VB内建数学运算与图形展示功能,在VB程序代码中可以像使用VB自己的函数一样使用Matrix VB的函数,而且可以不依赖于Matlab环境在Visual Basic中完成矩阵运算与图形绘制显示等功能,这种方法使用简单,编程效率高。
Excel VBA是Excel宏的编辑语言,是基于Visual Basic for Windows发展而来的,VBA提供了面向对象的程序设计方法,易于学习掌握,使用宏记录器还可记录用户的各种操作,并转换为VBA程序[1]。Excel VBA与Matrix连接的方法:在VBA菜单栏选择“工具”,在下拉菜单中单击“引用”,选中弹出的对话框中MMatrix选项,系统将加载Matrix VB的动态链接库MMatrix.DLL[2]。
在沉降观测过程中,为保证基准点的可靠性,必须分期测定基准点的沉降情况,然后对各个点的稳定性进行检验,剔除不稳定点,获得真正可靠点作为基准点。工程中常利用平均间隙法进行检验,在水准基点稳定性检验过程中需要反复进行矩阵运算,特别是在求广义逆矩阵时,如果利用C++等语言进行求解,就比较复杂,需要专门设计矩阵运算函数,而利用MatrixVB与Excel VBA联合进行计算则可以大大提高工作效率。
1 平均间隙法检验基准点稳定性的原理
1.1 整体检验
设1、2表示2个不同的观测周期。根据每一周期的观测成果,按秩亏自由网平差方法进行平差,由平差改正数计算每一周期的单位权方差估值,公式如下:
式中,f1、f2也为自由度(多余观测数)。
一般情况下2个不同周期观测的精度是相等的,但由于观测误差的存在,平差计算得到的2期方差估值不可能完全一致。必要时,在应用平均间隙法之前,需进行2期测量精度相同的检验,计算2期观测综合的单位权中误差:
式中,f = f1+ f2。
如果2期观测期间点位没有变动,那么根据2个周期观测成果平差后求得的高程差向量(间隙)为:
由间隙d的协因数阵为:
由间隙d可计算单位权方差为:
式中,Pd为Qd的广义逆; fs为独立的高程差d的个数。
作原假设H0:假设2期观测期间,网中所有点都是稳定的,则间隙d与观测值改正数v均为正态变量,是同一正态母体方差的无偏估值,则:
选定α,查表F(α,fs,f),若F<F(α,fs,f),则接受原假设,即网中所有水准点都是稳定的;反之,则拒绝原假设,整体检验未通过,表明网中存在动点,需进一步找出不稳定的点。
1.2 局部检验
设基准点分成稳定组F和动点组M,相应地:
采用如下变换:
则有:
2 水准基点稳定性检验程序设计
2.1 程序设计思想
1)首先利用Excel的宏功能录制一个制作水准基点稳定性检验数据表的宏,通过对所录制的宏进行修改,使其能根据用户输入的测段数生成相应的水准基点稳定性检验数据表。
2)在生成的表格中输入检验数据,利用Excel VBA语句将数据读入到程序中,借助Matrix VB中的矩阵运算函数如矩阵相乘函数mtimes()、矩阵求逆函数inv()对观测数据进行秩亏自由网平差。
3)对平差结果首先进行整体检验,若检验结果为网中所有水准基点保持稳定,则退出程序,否则进行局部检验,直到找出不稳定水准基点为止。程序设计流程如图1所示。
图1 程序设计流程图
2.2 程序实现
本程序的难点是根据测段数自动生成含有相对应测段数的表格和根据表格中的数据自动生成系数矩阵B。下面为整体检验的主要代码(部分):
1)初始化矩阵。
a=val(textbox1.text) ’测段数
L1= ones(a, 1): S1= ones(a, 1):P1= ones(1, a)
2)判断基准网中水准基点个数,初始化高程矩阵。
r = Application.CountA(Range("H:H"))
H = ones((r - 1), 1)
3)生成系数矩阵B的程序。
B = ones(a - 2, r - 1)
For i = 1 To a - 2
For j = 1 To r - 1
If Range("A" & (i + 2)).Value = j Then
B(i, j) = -1
ElseIf Range("B" & (i + 2)).Value = j Then
B(i, Range("B" & (i + 2)).Value) = 1
Else
B(i, j) = 0
End If
Next j
Next i
4)将检验数据读入程序中。
For i = 1 To a
h1(i,1)= Range("C" & (i + 2)).Value
S1(i, 1) = Range("D" & (i + 2)).Value
P1(1, i) =1/ S1(i, 1)
………
Next i
For i = 1 To (r - 1)
H(i, 1) = Range("H" & (i + 2)).Value
Next i
L1=minus(h1-mtimes(B,H))
5)秩亏自由网平差代码。
B1= Transpose(B):P1= diag(P1)
S= ones(1, r): S3= Transpose(S)
Nbb1= mtimes(mtimes(B1, P1), B)
Nbb2= mtimes(mtimes(B1, P2), B)
Q1= plus(Nbb1, mtimes(S3, S)) : Q2= inv(Q1)
W1= mtimes(mtimes(B1, P1), L1) x1= mtimes(Q2, W1)
Q3= plus(Nbb2, S) : Q4= inv(Q3)
W2= mtimes(mtimes(B1, P2),L2) : x2= mtimes(Q4, W2)
V1= minus(mtimes(B, x1), l1) : V2= minus(mtimes(B, x2), l2)
6)整体检验代码。
V1P1V1= mtimes(mtimes(Transpose(V1), P1), V1)
V2P2V2= mtimes(mtimes(Transpose(V2), P2), V2)
d = minus(x2, x1) : d1= Transpose(d)
Qd = mtimes(mtimes(Q2, Nbb1), Q2) : Pd = pinv(Qd)
Qs = rdivide((mtimes(mtimes(d1, Pd), d)), a/2)
Q = rdivide(plus(V1PV1, V2PV2),a)
TextBox1.Text = (r - 1) & "个基准点全部稳定"
Else
TextBox1.Text = "基准网中含有不稳定基准点"
End If
3 应用实例
为对某高层建筑群进行沉降监测,布设了含有4个水准基点的监测基准网,该监测网共含有6个测段,如图2所示。为检验监测网水准基点稳定性,在不同时间对基准网进行了2周期观测。
运行程序,输入测段数和F检验值,单击“生成表格”命令按钮,在Excel中生成2张水准基点稳定性检验数据表,将2个周期的观测数据分别输入到已生成的表格中,注意起点号与终点号都要按阿拉伯数字的形式输入,如点号BM01则应输入“1”,如表1所示。
表1 第1周期观测数据表
检查观测数据输入无误后,单击“整体检验”命令按钮,进行整体检验。若4个水准基点都保持稳定,则检验完毕,退出程序;若含有不稳定点,则在假设不稳定点点号的文本框中输入假设不稳定点点号,单击“局部检验”命令按钮,找出不稳点。程序运行结果如图3所示。
图3 程序运行结果图
如图3所示,该监测基准网中的4个水准基点保持稳定,2个周期的观测值改正数也被输出到水准基点稳定性检验数据表中。在随后的基准点稳定性检验工作中,只要将2个周期的数据输入到基准点稳定性检验数据表中,运行该程序即可对水基准点稳定性进行检验。
4 结 语
在水准基点稳定性检验过程中,Excel的宏功能完成了自动生成不同测段数所需要的水准基点稳定性检验数据表操作;Excel VBA语句实现了将水准基点稳定性数据表中的观测数据读入到程序中的功能;Matrix VB的矩阵运算函数对观测数据进行了秩亏自由网平差,并基于平均间隙法原理对水准基点的稳定性进行了检验。结果表明,基于Matrix VB与Excel VBA的平均间隙法在水准基点稳定性检验中具有较强的实用性。
[1] 李辉,郝艳芬.Excel 2003 VBA办公应用[M].北京:人民邮电出版社,2006
[2] 李沛鸿,江鸿斌,王劲松.基于Matrix VB的测量平差程序设计与实现[J].北京测绘,2012(6):14-18
[3] 尹晖,杨睿,陈鹏云.监测网基准点稳定性检验方法与应用[J].武汉理工大学学报:信息与管理工程版,2010,32(6):861-865
[4] 黄声享,尹晖,蒋征.变形监测数据处理[M].武汉:武汉大学出版社,2003
[5] 王汉雄,乔景顺.Excel VBA在测量数据处理中的应用[J].测绘科学,2008,33(2):210-212
[6] 姚占派,缑忠才.基于Matlab的水准点稳定性分析[J].现代测绘,2004,27(2):25-27
[7] 汤均博,周立.基于Matlab的逆稳平差法在沉降观测基准点检验中的应用[J].淮海工学院学报,2003,12(3):63-65
[8] 周西振.变形监测网基准点及工作基点的稳定性检验[J].北京测绘,2001(3):37-39
P221
B
1672-4623(2015)01-0146-03
10.3969/j.issn.1672-4623.2015.01.048
邱利群,硕士,主要从事变形监测及数据处理研究。
2013-12-23。
项目来源:国家测绘地理信息局重点实验室开放基金资助项目(2013118006)。