2022年水准网平差 .pdf
《2022年水准网平差 .pdf》由会员分享,可在线阅读,更多相关《2022年水准网平差 .pdf(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 (误差理论与测量平差础)课 程 设 计 报 告系(部) :土木工程系实习单位:山东交通学院班级:测绘 084 学生姓名:田忠星学号080712420 带队教师:夏小裕周宝兴时间:10 年 12 月 13 日 到 10 年12 月 19 日山东交通学院名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 27 页 - - - - - - - - - 2 目录:1.摘要P3 2.概述P3 3.水准网间接平差程序设计思路P3P4 4. 平差程序流程图P4P6 5. 程序源代码及说
2、明P7P23 6. 计算结果P23P26 7. 总结P26P27 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 27 页 - - - - - - - - - 3 一:摘要在测量工作中,为了能及时发现错误和提高测量成果的精度,常作多余观测,这就产生了平差问题。在一个平差问题中,当所选的独立参数X?的个数等于必要观测数t 时,可将每个观测值表达成这t 个参数的函数, 组成观测方程, 这种以观测方程为函数模型的平差方法,就是间接平差。二:概述:该课程设计的主要目是对水准网进行
3、间接平差,在输入数据后依次计算高程近似值误差方程和平差计算。三:水准网间接平差程序设计思路1根据平差问题的性质,选择t 个独立量(既未知点的高程)作为参数 X?2. 将每一个观测量的平差值(既观测的高程差值)分别表达成3由误差方程系数B和自由项组成法方程,法方程个数等于参数的个数 t ;4. 解算法方程,求出参数X?,计算参数(高程)的平差值X?=X0 +x ?;5由误差方程计算V,求出观测量 (高差 )平差值6.评定精度单位权中误差VLLVLL名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - -
4、 - 第 3 页,共 27 页 - - - - - - - - - 4 平差值函数的中误差四:平差程序流程图1已知数据的输入需要输入的数据包括水准网中已知点数未知点数以及这些点的点号,已知高程和高差观测值距离观测值。程序采用文件方式进行输入,约定文件输入的格式如下:第一行:已知点数未知点数观测值个数第二行:点号(已知点在前,未知点在后)第三行:已知高程(顺序与上一行的点号对应)第四行:高差观测值,按“起点点号,终点点号。高差观测值,距离观测值”的顺序输入。本节中使用的算例的数据格式如下2,3,7 1,2,3,4,5 5.016,6.016 1,3,1.359,1.1 1,4,2.009,1.7
5、 2,3,0.363,2.3 ,?20sunPVVrPVVTT.?0?Q名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 27 页 - - - - - - - - - 5 2,4,1.012,2.7 3,4,0.657,2.4 3,5,0.238,1.4 5,2,-0.595,2.6 2.平差计算过程(1)近似高程的计算。用一个数组来存储高程近似值,已知点的高程放在这个数组的开头,然后按照点号输入顺序依次搜索涉及该店的高差观测值, 看该高差涉及的另一点是否已知,若未知,则检
6、查下一个高差观测值,若已知,则可以计算出当前未知点的高差近似值, 并放入高程近似值数组,依次类推,直到所有未知点的高程近似值都被求出为止。(2)列立观测值的误差方程。根据各观测值的起止点信息及高差距离值和误差方程的系数矩阵权矩阵和常数项的各个元素赋值。(3)平差计算。通过间接平差通用过程进行平差计算,该过程将系数矩阵数组A权矩阵数组P 和常数向量数组L 以参数的方式传入,通过计算,把平差结果存放在解向量数组X 中,以参数的形式传出。3计算结果的输出计算的中间结果和最后结果都实时在文本框中显示,最后还可以把文本框中的内容保存在文本文件中。4界面设计名师资料总结 - - -精品资料欢迎下载 - -
7、 - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 27 页 - - - - - - - - - 6 根据以上分析, 本程序采用菜单组织程序,用文本框显示数据的输入计算和输出情况。由于涉及到打开和保存文件的操作,所以还需要一个通用对话框。(1)菜单设计。本程序的菜单结构如表所示。标题名称快捷键文件(&File)mnuFile , 打开数据mnuOpen , 保存结果mnuSave , aa , 退出mnuExit Ctrl+E 计算(&Calc)mnuCalc , 近似高程mnuHeight , 误差方程mnuEqu ,
8、平差计算mnuAdj (2)窗体文本框和通用对话框。在主窗体上绘制1 个文本框控件和一个通用对话框控件,并按照下图设置属性(文本框的Name 属性改为 txtShow)对象属性值Text1 Text Text1 MultiLine True 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 27 页 - - - - - - - - - 7 Form1 Caption 水准网间接平差CommonDialog1 Name CDg1 Text1 设计好属性后,调整控件和窗体的大小
9、和位置,以方便美观为好。五:程序源代码及说明程序中涉及的公共变量及其说明如下:Dim strFileName As String Dim nn%, un%, tn%, hn% 已知点个数,未知点个数,总点数,观测值个数Dim Pname() As String 点名数组Dim Hknown() As Double 已知高程数组,存放已知点高程和高程近似值Dim be%(), en%() 观测值的起点和终点编号数组,存储的是点序号Dim h#(), s#() 高差观测值数组和距离观测值数组Dim A#(), X#(), P#(), L#() 间接平差的系数阵、解向量、权阵和常数向量1. 数据输入
10、单击“文件打开文件”命令,弹出打开对话框,待用户选取了文件以后,程序开始读取已知数据,具体代码如下名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 27 页 - - - - - - - - - 8 Private Sub mnuOpen_Click() Dim i As Integer 循环变量Dim strT1 As String, strT2 As String CDg1.Filter = 文本文件( *.txt)|*.txt|所有文件( *.* )|*.* CDg1.
11、ShowOpen 打开对话框strFileName = CDg1.FileName 获得选中的文件名和路径Open strFileName For Input As #1 打开文件Input #1, nn, un, hn 读入已知点个数,未知点个数,观测值个数tn = nn + un ReDim Pname(1 To tn), Hknown(1 To tn) ReDim h(1 To hn), s(1 To hn), be(1 To hn), en(1 To hn) For i = 1 To tn 读入点名Input #1, Pname(i) Next i For i = 1 To nn 读入
12、已知高程Input #1, Hknown(i) Next i For i = 1 To hn 读入各观测值Input #1, strT1, strT2, h(i), s(i) be(i) = Order(strT1): en(i) = Order(strT2) 给起终点数组排序Next i 显示读入的数据txtShow.Text = txtShow.Text & 读入的水准网数据: & vbCrLf txtShow.Text = txtShow.Text & 已知点 & nn & 个,未知点 & un & 个,观测值 & hn & 个。 & vbCrLf txtShow.Text = txtS
13、how.Text & 网中涉及的点名有: For i = 1 To tn txtShow.Text = txtShow.Text & Pname(i) & , Next i txtShow.Text = txtShow.Text & vbCrLf txtShow.Text = txtShow.Text & 已知点高程为: & vbCrLf For i = 1 To nn txtShow.Text = txtShow.Text & Pname(i) & 的高程为: & Hknown(i) & vbCrLf Next i txtShow.Text = txtShow.Text & 各观测值分别为:
14、 & vbCrLf txtShow.Text = txtShow.Text & 起点 & & 终点 & & 高差观测值 & 距离观测值 & vbCrLf For i = 1 To hn txtShow.Text = txtShow.Text & Pname(be(i) & & Pname(en(i) & & Format(h(i), 0.000) & & Format(s(i), 0.000) & vbCrLf Next i Close #1 不要忘记关闭文件End Sub 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精
15、心整理 - - - - - - - 第 8 页,共 27 页 - - - - - - - - - 9 其中 Order()函数是根据点号 (字符串) 获得一个点的序号 (数值)的自定义函数, 之所以要进行这样的排序,是因为在输入和输出时需使用字符串类型的点号,而在程序计算时。 数组的下标元素需要整数型的点号。该函数定义如下:点名序号转换函数Public Function Order(str As String) As Integer Dim i% For i = 1 To tn If str = Pname(i) Then Order = i Exit For End If Next i En
16、d Function 2. 高程近似值的计算输入数据后,点击“计算近似高程”,程序根据已知数据计算未知点的高程近似值,并将计算的中间结果显示在文本框中,代码如下:计算近似高程Private Sub mnuHeight_Click() Dim i%, j% For i = 1 To un For j = 1 To hn If be(j) = nn + i And en(j) nn + i Then 找到一个起点相同且终点已知的观测值Hknown(nn + i) = Hknown(en(j) - h(j) Exit For End If If en(j) = nn + i And be(j) nn
17、 Then A(i, en(i) - nn) = 1 若终点未知,则给终点对应的系数矩阵元素赋值If be(i) nn Then A(i, be(i) - nn) = -1 若起点未知,则给起点对应的系数矩阵元素赋值L(i) = -(Hknown(en(i) - Hknown(be(i) - h(i) 根据起终点计算常数项P(i, i) = 1 / s(i) 以距离的倒数为权Next i 显示误差方程txtShow.Text = txtShow.Text & 列立的误差方程: & vbCrLf For i = 1 To hn For j = 1 To un txtShow.Text = txt
18、Show.Text & A(i, j) & Next j txtShow.Text = txtShow.Text & & Format(L(i), 0.0000) & vbCrLf Next i txtShow.Text = txtShow.Text & 权矩阵: & vbCrLf For i = 1 To hn For j = 1 To hn txtShow.Text = txtShow.Text & P(i, j) & Next j 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第
19、 10 页,共 27 页 - - - - - - - - - 11 txtShow.Text = txtShow.Text & vbCrLf Next i End Sub 4.计算高程平差值和高程中误差和高差中误差点击“计算平差计算”命令,程序调用间接平差通用过程求解误差方程, 并求出高程平差值高程中误差和高差中误差,显示在文本框中,代码如下:平差计算Private Sub mnuAdj_Click() Dim i%, j%, VtP#(), VtPV#(), z#, AtP#(), AtPA#(), r(), Naan#(), b() Dim o() As Double ReDim X(1
20、To un) ReDim o(1 To un, 1 To 1) ReDim s(1 To hn, 1 To 1) ReDim AX(1 To hn, 1 To 1) ReDim V(1 To hn, 1 To 1) ReDim VtP(1 To 1, 1 To hn) ReDim VtPV(1 To 1, 1 To 1) ReDim AtP(1 To un, 1 To hn) ReDim AtPA(1 To un, 1 To un) ReDim bAt(1 To un, 1 To hn) ReDim AbAt(1 To hn, 1 To hn) ReDim r(1 To un, 1 To un
21、) ReDim b(1 To un, 1 To un) InAdjust A, P, L, X 调用间接平差的通用过程求解计算并显示高程平差结果txtShow.Text = txtShow.Text & 平差计算结果: & vbCrLf txtShow.Text = txtShow.Text & 点号初始高程 (m) 高程改正数 (m) 平差后高程 (m) & vbCrLf For i = 1 To un txtShow.Text = txtShow.Text & Pname(nn + i) & & Format(Hknown(nn + i), 0.0000) Hknown(nn + i) =
22、 Hknown(nn + i) + X(i) txtShow.Text = txtShow.Text & & Format(X(i), 0.0000) & & Format(Hknown(nn + i), 0.0000) & vbCrLf Next i txtShow.Text = txtShow.Text & vbCrLf 计算改正数 V For i = 1 To un For j = 1 To 1 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 27 页 - - -
23、 - - - - - - 12 o(i, j) = X(i) Next j Next i Matrix_Multy AX, A, o For i = 1 To un For j = 1 To 1 s(i, j) = L(i) * 1000 Next j Next i MatrixMinus AX, s, V For i = 1 To hn For j = 1 To 1 V(i, j) = AX(i, j) * 1000 - s(i, j) Next j Next i 计算并显示单位权中误差MatrixTrans V, Vt txtShow.Text = txtShow.Text & vbCrL
24、f Matrix_Multy VtP, Vt, P txtShow.Text = txtShow.Text & vbCrLf Matrix_Multy VtPV , VtP, V For i = 1 To 1 For j = 1 To 1 z = VtPV(i, j) Next j Next i 0 = Sqr(z / (hn - nn) txtShow.Text = txtShow.Text & 单位权中误差:(mm) & vbCrLf txtShow.Text = txtShow.Text & Format(0, 0.0000)txtShow.Text = txtShow.Text & v
25、bCrLf 计算未知点的高程中误差MatrixTrans A, At Matrix_Multy AtP, At, P Matrix_Multy AtPA, AtP, A For i = 1 To un For j = 1 To un r(i, j) = AtPA(i, j) Next j Next i Call jzqn(r(), b() txtShow.Text = txtShow.Text & 点号高程中误差:(mm) & vbCrLf For i = 1 To un z = b(i, i) zz = 0 * Sqr(z)名师资料总结 - - -精品资料欢迎下载 - - - - - - -
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年水准网平差 2022 水准 网平差
限制150内