1平面控制网平差计算程序设计
(1)误差方程式的组成
控制网中的观测值一般有边长、方向(角度观测值因定权问题一般采用方向值进行平差)、方位角,可以发现,这些观测值的误差方程式的非零项一般最多为4个,即在两个点均为待定点的情况下。消除定向角后的“和误差方程”的非零系数为2n+2个(n为测站方向观测个数)。若按照误差方程的格式,其系数矩阵为n行和2*dd列(dd为网中未知点个数),这样,系数矩阵将会有很多零元素存在,浪费了大量的存储空间并影响计算效率,所以,误差方程系数矩阵应采用压缩格式进行存储[3]。可采用以下方法:A(m,n)-A(m,9)其中,m为观测值个数,n为未知点个数的两倍。改进后的A阵格式为:AI=(编号1,系数1,编号2,系数2,…,编号4,系数4,常数项)共9列。这样,就得到了改进后的误差方程系数和权阵。
(2)平差值计算与精度评定
该程序是平面控制网平差计算的主程序,通过迭代计算,达到获得精确平差结果的目的。该程序调用了误差方程与法方程的组成、求逆、坐标改正数计算、观测值平差值计算以及精度评定等函数3]。
(3)点位误差椭圆和相对点位误差椭圆
误差椭圆表示了网中点或选点之间的分布情况。在测量工作中,常用误差椭圆对布网方案作精度分析。绘制误差椭圆只需三个数据:椭圆的长半轴a、短半轴b和主轴方向。
2平面控制网近似坐标推算
讨论平面控制网平差计算过程中重要的一环———近似坐标的推算,介绍算法及简单介绍一下整个近似坐标计算的程序框架。
(1)计算参数近似值的必要性
对间接平差(又称参数平差)而言,一般都需要计算参数的近似值。但并不是说在任何情况下都必须计算参数的近似值,倘若观测值与所设参数之间建立的是一种线形的函数关系,则不给出参数近似值也可平差,只是给出参数近似值后,在列误差方程或是解算法方程的过程中会使得计算变得更加简便和方便[4]。当观测值和参数之间建立的关系为线形函数时,平差前可以不给参数的近似值。但对于测角网、边角网和侧边网等平面控制网,观测的是方向值、角度值或是边长,选取的参数又通常为待定点的坐标,观测值与参数之间的建立的关系均为非线性函数,如果不给出近似坐标,误差方程就无法列出,因为误差方程的系数均由近似坐标求得,故计算近似坐标对平面控制网而言是十分重要的一步。由于实际观测数据的个数多于必要观测的个数,近似值中还含有误差,因此还需近一步对观测值进行平差,以对近似值加以改正,得到最或然坐标值[5]。
(2)计算近似坐标程序的总体框架及具体算法
根据计算待定点坐标常用的方法,编写了相应的近似坐标推算程序。该程序的目的就是让用户尽量不提供不需提供的信息,尽可能自动完成所有待定点近似坐标的计算。本节先从总体上介绍整个程序的思路,然后针对几种常见的观测条件介绍极坐标的计算方法,并详细说明该方法在程序中实现的思路。程序的总体框架如图1所示,框架中用到的变量和函数说明如下:Xyknow———已知点点号数组;xyun-know———未知点点号数组;Point———总点号数组;ed———已知点个数;Dd———未知点个数;length———MATLAB内部函数,对数组求长度。该程序总体上采用循环结构,直到所有未知点的近似坐标计算完毕,程序终止循环。如果所有方法都采用过,但仍有部分点的近似坐标无法计算出,程序亦会自动中止,退出程序,以避免死循环的产生,程序中考虑的方法是极坐标法。基本思路是:最外层采用while循环,当未知点点号数组长度大于零,即还存在未知点未解算出来时循环运行,里层在采用FOR循环逐一对每一个未知点进行搜索,搜索到某一个未知点满足某一种条件后即时解算出来,接着马上退出for循环并对已知点点号数组和未知点点号数组进行更新,再由while判断未知点点号数组的长度,进入对未知点点号数组的下一轮for循环,如此反复,直到未知点点号数组为空。
(3)极坐标计算
这是所有方法中最简单的一种,适合于求附和导线、闭合导线、支导线及边角网。它要求具备两个已知点或是一个点的坐标和一个已知方位角且改点是方位角的起点。本程序采用的是极坐标的方法进行编写,其基本思路是:如果存在已知方位角,首先判断该方位角的起点是否是已知点A,重点是否是所求的待定点P,如果是,搜索边长AP即可按极坐标公式计算坐标;若没有一直方位角或其终点不是P,则搜索与P有方向观测的已知点A,再由A搜索到另一个已知点B,且A和B有方向观测值,于是可求出AP的方位角,再搜索AP的边长观测值,由极坐标公式即可计算P的坐标。点的坐标按此方法求出后,设置way的值为1,P点就变成了已知点。其他待定点只要满足此类条件,便可由这种方法求出。其程序框图见图2。
3水准网平差程序设计
水准网平差程序设计一共有三种方法,一维压缩存储法方程平差程序、上三角存储法方程平差程序、利用MATLAB矩阵运算平差程序以及利用平差结果的相互转换变换基准的程序[6]。(1)观测数据的组织与近似高程计算数据文件的组织下面给出一个水准网输入数据文件的例子:336(已知点个数、未知点个数、观测值个数)101102103104105106(点号)34.78835.25937.825(已知点高程)1041011.6524.5(起点点号、终点点号、高差观测值、距离观测值)其中编号数组未知点在前,已知点在后。(2)数据读入与近似高程计算程序程序中包含了近似高程计算,即进行循环,程序中设置了一个变量ie,每计算出一个点的高程,其值加1,当其值等于未知点的个数时停止循环。
4结论(程序界面)
运行函数,生成主界面如图3所示,主界面上有两个单选按钮,分别表示水准网和平面网平差,选定其中一个,进入水准网解算界面或平面网解算界面。点击“退出”按钮,结束程序。本文介绍了MATLAB程序设计基础、数据文件的输入与输出、二维绘图以及图形用户界面设计等。同时设计了平面控制网平差计算,平面控制网近似坐标推算,水准网平差程序设计三项界面。,希望更加方便的使用。
作者:刘洋 武玲玲 单位:天津市普迅电力信息技术有限公司 安徽理工大学测绘学院