基于VB程序的GPS基线向量网平差程序设计

2012-10-21 01:54成都理工大学地球科学学院秦岩宾韩丽丽
河南科技 2012年8期
关键词:约化数组起点

成都理工大学 地球科学学院 魏 悦 秦岩宾 韩丽丽

基于VB程序的GPS基线向量网平差程序设计

成都理工大学 地球科学学院 魏 悦 秦岩宾 韩丽丽

基于VB开发平台的GPS基线向量网平差程序设计数据结构简单,操作方便,可以用来处理各种网型的GPS基线数据。本文,笔者主要介绍程序的设计流程。

一、程序设计的主要步骤

1.基线数据格式的设计和读入。

(1)数据文件的设计。GPS接受机观测值经过南方测绘GPS数据处理软件预处理后,可以生成不同格式的基线解数据。如:PowerAdi3.0 Trimble ,南方格式,TGPPS Ski Pro等。本文,笔者采用南方格式的基线解数据,每一行为每条基线的观测信息,加入已知点数据,用Excel进行简单编辑,即可得到程序所需的格式(网名.txt)。程序运用Do–Loop循环语句逐行读入基线数据并分别进行处理,结果用数组进行保存。其数据文件格式为:已知点点名,已知点X,已知点Y;起点名,终点名,起点X,起点Y,起点Z,ΔX,ΔY,ΔZ。在每一个数据之间用“,”作为分隔符。

(2)数据文件的读入。GPS基线数据的录入要根据数据文件的格式来编写程序的读入方式。根据数据文件的结构特点,采用数据逐行读入并分别对其进行处理,在读入每一行数据后,根据该行中的分隔符来分离一行中的不同类型数据,然后分别存储在对应的数组中。由于每一行的最后一个类型的数据不存在分隔符,所以要用另外一个语句来处理,可以采用right$(str,n)函数,直接读取每一行中最后一个类型的数据。

2.待测点近似坐标的解算。首先定义点名数组,通过依次访问所有基线的起点点名数组、终点点名数组以及已知点点名数组,根据不重复不遗漏的原则,查询所有点名(包括已知点),从而建立控制点点名数组,并保存控制点点名。假设第一点的平面坐标为x(1)=100 000,y(1)=100 000,按基线条数循环,判断基线的起点和终点是否已经计算出(如果起点坐标已经算出,那么终点坐标就等于起点坐标加上向量差;如果终点坐标已经算出,那么起点坐标就等于终点坐标减去向量差),依次循环所有的控制点数组,直到计算出所有的控制点坐标。加入已知点的坐标,计算出两个平面坐标系的转换参数(2个旋转,1个比例,1个尺度缩放),把假设坐标转换到已知点的坐标系中。

3.列误差方程及法方程组。该程序采用的平差模型是间接平差法。在列误差方程时,按观测基线循环,一条基线为一个误差方程。在计算出误差方程的系数及常数后,计算出法方程,并计算出法方程的系数阵元素。采用这种算法,只需要一个一维数组来临时保存误差方程系数元素,调用法方程组通用过程组成法方程。一条基线的误差方程处理完毕,即进入下一条基线,当所有的基线处理完毕时,完成法方程组成。

4.高斯约化法解算法方程组。使用高斯约化法解算法方程组,可按3个步骤进行。

(1)利用循环语句约化法方程系数阵和常数项,并回代求解未知参数。

(2)将约化后的法方程系数阵送入通用过程inversion()求逆。

(3)按点号循环,求解待定点坐标中误差。其中,法方程系数阵元素存储采用上三角一维数组存储,其目的是节省存储空间,最初保存法方程系数阵,约化后保存法方程系数阵消化方程,求逆完毕后再保存法方程系数阵逆阵元素,最大程度地节省内存。

高斯约化共有3重循环,最外层循环控制约化次数,第二层循环控制约化的行数,最内层循环控制一行中所约化的元素。回代求解未知参数时,采用2重循环,外层循环控制求解未知数,内层循环控制回代次数。法方程系数阵求逆是利用高斯约化后系数阵,以单位阵的一列为常数项,回代求解得到逆阵元素。

5.平差成果输出。平差成果文件格式为txt,其中包括点名、x坐标和y坐标以及点位中误差mp。用总控制点数做循环次数,把每组数据都写入文本文件中,得到最终的平差文件,并将其保存在指定路径中。

二、平差成果检校

用南方测绘GPS数据处理软件处理相同的数据,得到的平差结果与运行本文程序得到的平差结果进行比较,以确定该程序的正确性。具体结果见表1。

表1 平差结果比较

由表1可知,两种程序所得的结果在X方向的差值为分米级,Y方向的差值为厘米级。出现这一结果的原因有二:一是采用的算法不同,二是本文中,笔者用的程序没有处理观测值的各种误差,如电离层、对流层折射误差等。

三、结论

GPS基线向量网平差程序能完成任意GPS基线向量网平差数据的处理,在使用性方面能基本满足用户的需要,但与商品化程序相比还有许多方面需要改进,笔者将对其进行不断改进和完善。

猜你喜欢
约化数组起点
约化的(3+1)维Hirota方程的呼吸波解、lump解和半有理解
JAVA稀疏矩阵算法
JAVA玩转数学之二维数组排序
弄清楚“起点”前面有多少
起点
我的“新”起点
Excel数组公式在林业多条件求和中的应用
寻找勾股数组的历程
新年的起点
M-强对称环