水准网平差(VB代码)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(误差理论与测量平差础)

课程设计报告

系(部):土木工程系

实习单位:山东交通学院

班级:测绘084

学生姓名:田忠星学号********* 带队教师:夏小裕﹑周宝兴

时间: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. 将每一个观测量的平差值(既观测的高程差值)分别表达成

3.由误差方程系数B和自由项组成法方程,法方程个数等于参数的个数t ;

4. 解算法方程,求出参数Xˆ,计算参数(高程)的平差值

Xˆ=X0 +xˆ;

5.由误差方程计算V,求出观测量(高差)平差值6.评定精度

单位权中误差

V

L

L+ =

V

L

L+ =

平差值函数的中误差

四:平差程序流程图

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

,ˆ20s u n PV V r PV V T T +-==σ.

ˆˆˆ0ˆϕϕϕσσQ =

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)菜单设计。本程序的菜单结构如表所示。

(2)窗体﹑文本框和通用对话框。在主窗体上绘制1个文本框控件和一个通用对话框控件,并按照下图设置属性

(文本框的Name属性改为txtShow)

Text1设计好属性后,调整控件和窗体的大小和位置,以方便美观为好。

五:程序源代码及说明

程序中涉及的公共变量及其说明如下:

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.数据输入

单击“文件→打开文件”命令,弹出打开对话框,待用户选取了文件以后,程序开始读取已知数据,具体代码如下

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 i

For 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) '给起终点数组排序Next i

'显示读入的数据

txtShow.Text = txtShow.Text & "读入的水准网数据:" & vbCrLf

txtShow.Text = txtShow.Text & " 已知点" & nn & "个,未知点" & un & "个,观测值" & hn & "个。" & vbCrLf

txtShow.Text = txtShow.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 & " 各观测值分别为:" & 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

相关文档
最新文档