误差理论与测量平差础)
课程设计报告
系(部): 土木工程系
实习单位: 山东交通学院
班 级: 测绘 084
学生姓名: 田忠星 学号 080712420
带队教师: 夏小裕﹑周宝兴
时间: 10 年 12 月 13 日 到 10 年 12 月 19 日
山东交通学院
目录:
1.摘要 P3
2.概述 P3
3.水准网间接平差程序设计思路 P3—P4
4.平差程序流程图 P4— P6
5.程序源代码及说明 P7— P23
6.计算结果 P23— P26
7.总结 P26— P27
一:摘要 在测量工作中,为了能及时发现错误和提高测量成果的精 度,常作多余观测,这就产生了平差问题。在一个平差问题中, 当所选的独立参数 X? 的个数等于必要观测数 t 时,可将每个观 测值表达成这 t 个参数的函数,组成观测方程, 这种以观测方程 为函数模型的平差方法,就是间接平差。
二:概述: 该课程设计的主要目是对水准网进行间接平差,在输入数据 后依次计算高程近似值﹑误差方程和平差计算。
三:水准网间接平差程序设计思路
1.根据平差问题的性质,选择 t 个独立量(既未知点的高程) 作为参数 X?
2.将每一个观测量的平差值(既观测的高程差值)分别表达成
L L V
3.由误差方程系数 B 和自由项组成法方程,法方程个数等于参 数的个数 t ;
4. 解算法方程,求出参数 X? ,计算参数(高程)的平差值
X? =X0 + x? ;
5.由误差方程计算 vb 字符串转数组V,求出观测量 (高差 )平差值 L L V 6.评定精度
单位权中误差
平差值函数的中误差
四:平差程序流程图
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 2,3,0.363,2.3
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)近似高程的计算。用一个数组来存储高程近似值,已知点 的高程放在这个数组的开头, 然后按照点号输入顺序依次搜索涉 及该店的高差观测值, 看该高差涉及的另一点是否已知, 若未知, 则检查下一个高差观测值, 若已知, 则可以计算出当前未知点的 高差近似值, 并放入高程近似值数组, 依次类推, 直到所有未知 点的高程近似值都被求出为止。
(2)列立观测值的误差方程。根据各观测值的起止点信息及高 差﹑距离值和误差方程的系数矩阵﹑权矩阵和常数项的各个元 素赋值。
(3)平差计算。通过间接平差通用过程进行平差计算,该过程 将系数矩阵数组 A ﹑权矩阵数组 P 和常数向量数组 L 以参数的 方式传入,通过计算,把平差结果存放在解向量数组 X 中,以 参数的形式传出。
3.计算结果的输出 计算的中间结果和最后结果都实时在文本框中显示, 最后还可以 把文本框中的内容保存在文本文件中。
4.界面设计
根据以上分析, 本程序采用菜单组织程序, 用文本框显示数据的 输入﹑计算和输出情况。 由于涉及到打开和保存文件的操作, 所 以还需要一个通用对话框。
(1) 菜单设计。本程序的菜单结构如表所示。
标题 | 名称 | 快捷键 |
文件 ( &File ) | mnuFile | — |
⋯打开数据 | mnuOpen | — |
⋯保存结果 | mnuSave | — |
⋯— | aa | — |
⋯退出 | mnuExit | Ctrl+E |
计算 ( &Calc ) | mnuCalc | — |
⋯近似高程 | mnuHeight | — |
⋯误差方程 | mnuEqu | — |
⋯平差计算 | mnuAdj | — |
2) 窗体﹑文本框和通用对话框。在主窗体上绘制 1 个文本
框控件和一个通用对话框控件,并按照下图设置属性
文本框的 Name 属性改为 txtShow )
对象 | 属性 | 值 |
Text1 | Text | |
Text1 | MultiLine | True |
Form1 | Caption | 水准网间接平差 |
CommonDialog1 | Name | CDg1 |
Text1 设计好属性后,调整控件和窗体的大小和位置,以方便美 观为好。
五:程序源代码及说明
程序中涉及的公共变量及其说明如下:
单击“文件→打开文件”命令,弹出打开对话框,待用户选取了
文件以后,程序开始读取已知数据,具体代码如下
Private Sub mnuOpen_Click()
Dim i As Integer '循环变量
Dim strT1 As String, strT2 As String
CDg1.Filter = "文本文件( *.txt )|*.txt|所有文件( *.* ) |*.*" CDg1.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 iFor i = 1 To nn
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) '给起终点数组排序
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论