第三章 水准网平差程序设计
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2)已知点高程信息:该部分占N1行,每行格式为
已知点编号,该点的高程(单位:米)。
注意:在给控制点编号时,先给待定点编号,然后 给已知点编号。编号从1开始顺序编号。 3)高差观测值信息:该部分占NS行,每行格式为
测段编号,测段起点编号,测段终点编号,测段观 测高差(单位:米),测段长度(单位:千米)。
(3)循环访问每一个观测值,取出每个观测值的 起点点号(假定为p1)和终点点号(假定为p2 )
根据p1、p2得到p1到目标点的路线长度S1和p2到 目标点的长度S2,再结合p1、p2的路线长度S12, 判断p1是否可以作为p2的邻接点,以及p2 是否可
以作为p1的邻接点。
那么p1可作为p2的邻接点的条件为:
本章难点: 1、近似高程计算 2、最短路线的计算 3、误差方程及法方程的构建 4、直接计算出法方程的系数矩阵BTPB和常 数矩阵BTPL
一、水准网间接平差算法概述
该课程中所采用的平差模型为间接平差,即所
选的独立参数的个数等于必要观测数,这样可以
将每个观测值表示成这t个参数的函数,组成观测
方程。
H近似 H已知 h测段
水网观测数据(测段)的组织:
测段号 起点 终点
1
AB
2
EC
3
DC
4
BC
5
AD
6
AC
7
AF
测段高差(m)
5.835 1.006 7.384 3.782 2.270 9.64 0.003
测段长(km) 测站数
1.5 0.8 2.1 3.2 1.7 1.3 4.1
水准网近似高程计算算法
间接平差的函数模型: L B X d
n,1 n,t t ,1 n,1
平差时一般对所选参数取近似值
X
X
0
x
代入上式
并令 l L (BX 0 d ) L L0
由此可得误差方程
V
n,1
B
n,t
x l
t ,1
,式中
l 为误差方程常数项
采用的平差准则为最小二乘法: V T PV min
代入相应的公式 进行计算 x 、v
计算待求量 的平差植
精度评定 成果输出
2.1 水准网平差中数据的组织(数据文 件格式的设计)
水准网平差程序设计中数据的组织是一个关键 问题。文件格式的设计就是规定数据文件中包含 的内容、各类数据的先后顺序以及各种数据的书 写格式。从程序设计者的角度来说,数据文件格 式设计相当于告诉用户应当怎样准备数据文件, 当然,程序中也必须按照约定的格式从文件中读 取数据。数据文件由四个部分组成,其格式如下。 1)基本信息部分:该部分仅占一行,其内容为 已知点数N1,未知点数N2,高差观测值个数NS。
4)点名信息:该部分占N(N=N1+N2)行,每行 格式为
水准点编号,该点名称
其中点名长度不超过8个字符,即4个汉字。但最好 用字符串命名。
以下为一具有两个已知点、三个待定点和七个测段的
水准网的示例数据,打开TXT文件文件后,内容如下。
2,3,7 4 , 5.016 5 , 6.016 1 , 4 , 1 , 1.359 , 1.1 2 , 4 , 2 , 2.009 , 1.7 3 , 5 , 1 , 0.363 , 2.3 4 , 5 , 2 , 1.012 , 2.7 5 , 1 , 2 , 0.657 , 2.4 6 , 1 , 3 , 0.238 , 1.4 7 , 3 , 5 ,-0.595 , 2.6 1 ,P1 2 ,P2 3 ,P3 4 ,A 5 ,B
一般应按数据处理和计算功能的划分,将 网平差程序分为若干独立函数,每个函数 完成特定的计算或操作,当需进行某种平 差时,再调用这些函数即可。
二、水准 网平差程序 设计数据组 织及处理流 程
界面设计 原始数据输入、中间结 果和最终结果数据格式
的组织及输出
数据读入
近似高程的计 算
组建误差方程,即 B、l的生成
水准网平差输入界面一
水准网平差输入界面二
水准网平差输入界面三
四、高差闭合差的计算与检查
为了检查水准高差的质量,水准网平差前一 般进行附合水准路线闭合差计算与多边形闭合差 计算,并进行闭合差的检核。 1.附合水准路线高差闭合差的计算 a)最短路线搜索算法 “邻接点”:若一个点借助 另一个点与目标点发生了 联系,称另一个点是这个点 的“邻接点”。 如果一个点与目标点有直接联系,我们也把目标 点称为这个点的邻接点。
1、定义一数组a(),将已知点(原有高程 和计算出的近似高程都可视为已知点)存 到a()数组中; 2、遍历所有测段(从第一个测段到最后 一个测段);
a)判断测段中起点为已知点(并用一 布尔类型变量来标记),判断终点为未知 点(用一布尔类型变量来标记),若同时 成立,则进行计算;
b)再次遍历测段,找到满足这些条件 的测段 (其起点不是已知点,终点是已知 点),若同时满足,则进行起点近似高程 的计算,并把起点的点号和近似高程存到 已知数组中;
3、判断计算出近似高程的个数是否小于未 知点高程点的个数,若是再次进行循环, 若否,计算完毕(即水准网中未知高程点 的近似高程已全部计算出来)。
六、误差方程的组成
对于水准网平差,关键就是误差方程 的构建,即相关矩阵的生成,这里所指的 矩阵是系数矩阵B和常数矩阵L。如何来 组成这两个矩阵呢?还是一个方程一个方 程的建立,随后将相应值存储到矩阵B和 L的对应元素中。
设p1选择p2作为邻接点,P2到目标点的路线长
度为S2, p1到p2的路线长度为S12,则p1到目标点 的路线长度S1为
S1=S2+S12 若还有一点P3也是P1的邻接点,则经由P3到 目标点的路线长度为
S’1=S3+S13 为了寻求最短路线,显然当S1<S’1时,应选p2 作为p1的邻接点,反之应选择p3作为p1的邻接点。 因此寻求最短路线的过程转化为给每个点寻找邻 接点的过程,当每个点都有了邻接点,且这个点 连接的路线又是最短路线时,搜素工作即告结束。
W H1 h1 h2 hn H2
式中,正负号取决于高差起始点到终点的方向与 推算路线是否一致。
闭合差的限差为:
W限 2 S1 S2 Sn 其中,μ为每千米观测高差中误差。
假如网中共有m个已知点,将m个已知点两两组 合,计算m(m-1)/2条附合路线的闭合差,每条路 线按最短路线进行计算。
显然邻接点不是唯一的,但是我们规定每个点 只有一个邻接点;当网中每个点的邻点都唯一确 定时,顺着邻接点又可找到邻点的邻接点,这样 一层一层地找下去,最终找到目标点,每个点到 目标点的路线是唯一确定的。
根据邻接点的概念可知,任何一点沿邻接点 到目标点的路线长度是其邻接点到目标点的路线 长度再加上该点与其邻接点之间的路线长度。当 一个点有多个点可以作为邻接点时,只选择路线 最短的一点作为邻接点,这样就可保证沿邻接点 到目标点的路线是最短路线。
设水准网中有n个观测高差、t个高程点,那么 独立闭合环的个数为r=n-t+1
保证闭合环独立的方法是,每个新环找到的闭 合环都有前面找到的闭合环中不曾使用的观测 值。
(2)在多边形环独立的情况下,闭合环的边长 最短。
关于最小环问题可以用最短路径的方法解决。 若仅通过一个观测值即可将两个点p1到p2连接 起来,构成一条路线,可把这种路线称为p1到 p2的直接路线。如果直接路线能同别的观测值构 成闭合环,那么从p1到p2应有两条或两条以上 的路线。
式中,正负号取决于高差起点到终点的方向与推 算路线的方向一致。
环闭合差的限差为
W限 2 S1 S2 Sn
其中,μ为每千米观测高差中误差。
实际计算时,一般只计算最小独立环的闭合差。 最小闭合环应该满足如下条件:
(1)多边形环应该是相互独立(线性无关)的, 即任何一个多变边不能由其它多边形线性组合 而得到。满足独立条件可以避免重复计算,也 可以避免遗漏。
2.根据观测值与未知参数之间的函数关系建立误 差方程式,若误差方程是非线性方程,还要引入 参数近似值,将误差方程线性化;
3.由误差方程组成法方程;
4.解算法方程,求取未知参数;
5.精度评定。
平差程序设计不仅仅是“写程序”,测 量程序设计还包括程序功能设计、平差模 型选择、算法选择、数据接口设计等内容。
不难看出总共有n+t个参数,而所列的误差方 程只有n个,故只采用误差方程是不能解求n+t 个参数的,还需寻找其他的条件。按着最小二 乘法法则,对t个参数求偏导,得出式子 BT PV 0
由误差方程和求偏导后得到的式子,可唯一 确法定方程n+,t个如待为求:量B.T并P有Bx这两BT个Pl式 子0 可以推出
从而可求得 x (BT PB)1 BT Pl ,将该式代入到误差
即可求得改正数 v 。
从而平差值结果为:
L
L
v,
X
X
0
x
本课程中以未知点高程值作为未知参数,以高 差作为观测值,以观测路线长度的倒数作为观测 值的权,采用间接平差模型进行平差计算。
其平差的一般步骤如下:
1.根据平差问题选定未知参数;
系数矩阵B构建算法描述:
1、定义一个存储系数B的数组b(),其行数为观测 测段数,列数为所选必要参数个数;定义一个存 储常数阵L的数组L(),其行数为测段个数,列数 为1;
最短路线搜索函数 FindShortPath(p as integer, exclude as integer, int neighbor()as integer,diff() as double, S() as double) b)路线闭合差计算算法
从一个已知点出发用观测高差依次推算其它 各点的高程,最后闭合到另外一个已知点上,闭 合点上推算高程和已知高程值之差称之为附合水 准路线闭合差,简称路线闭合差。设k1、k2为两 个已知点,已知高程值分别为H1、H2,两点之间 的推算路线由高差h1,h2……hn,各测段路线长度 分别为S1,S2 ……Sn,路线闭合差为
综上所述,设目标点点号为k1,搜索各点到k1的 最短路线的计算过程如下:
(1)定义两个数组。一个数组Neighbor用来存储 每个点的邻接点点号;另一数组S用来存储每个点 到目标点的路线长度。
(2)将S(k1)赋值为0,数组的其它元素赋值为 1.0e30(每点到目标点的初始路线长度为无穷 大),Neighbor(k1)赋值k1,Neighbor数组的其 它元素赋值为-1(表示没有邻接点)。
2.2 数据存储方案设计
这里的数据存储是指数据在内存中的存储。 测量平差程序中用到的数据较多,一般先将磁盘 中的数据读到内存中,按照不同的类别有序地放 在变量或数组中,然后再进行平差计算,最后将 计算结果写到磁盘文件中。
三、水准网平差界面设计
要整用户的交互,尽量不 要画蛇添足。
c)环闭合差计算算法
在水准网中,由观测高差相连接可以形成闭 合多边形,理论上构成闭合多边形的各观测高 差之和应该为0,由于观测误差的存在,高差之 和一般不等于0,闭合多边形的观测之和称为环 闭合差。
一般情况下,设构成闭合环的观测高差 h1,h2……hn,环闭合差为
W h1 h2 hn
S2>S1+S12
…(条件1)
p2可作为p1的邻接点的条件为:
S1>S2+S12
…(条件2)
若条件1成立时,Neighbor(p2)=p1,S(p2)=S1+S12;
若条件2成立时,Neighbor(p1)=p2,S(p2)=S1+S12。
(4)当水准网的规模较大时,在循环访问每一 个观测值后某些点到目标点的路线还不是最短路 线,甚至有些点还没有找到邻接点,需要转到 (3)继续为寻找路线最短的邻接点,直到所有 的观测边不再满足条件1和条件2,这时表明每个 点都已经找到了到目标点最短的邻接点,搜素工 作结束。
条件2若条件1成立时neighborp2p1sp2s4当水准网的规模较大时在循环访问每一个观测值后某些点到目标点的路线还不是最短路线甚至有些点还没有找到邻接点需要转3继续为寻找路线最短的邻接点知道所有的观测边不再满足条件1和条件2这时表明每个点都已经找到了到目标点最短的邻接点搜素工作结束
第三章 水准网平差程序设计
如果选定一条直接路线,再从非直接路线中 找到p1到p2的最短路线,把这条最短路线与直 接路线连接起来一定是包含直接路线的最小环。 为保证找到的闭合环是独立的,只能将未参加过 前面环闭合差计算的观测作为直接路线。
五、待定点近似高程计算
待定点高程计算是为了得到未知点的高程近 似值,在求取未知点近似高程的时候,要注意测 段的方向及相关正负号。既可以进行人工计算后 输入到程序中,也可以直接将原始数据直接读入 到程序中,根据相关算法让程序自动计算。计算 原理如下式: