资源描述
毕业论文
论 文 题 目 基于VB的间接平差程序设计
专 业 班 级 工程测量
学 生 姓 名 黄晓伟
指 导 教 师 王克晓
完 成 时 间 2015年5月5日
重庆能源职业学院
重庆能源职业学院毕业设计(论文)指导教师评语
评语:
成绩:
指导教师签名:
年 月 日
重庆能源职业学院毕业设计(论文)答辩记录
提 出 问 题
回 答 问 题
正确
基本正确
有一般性错误
有原则性错误
回答不清
1
2
3
4
5
6
答辩委员会评语及建议成绩:
答辩委员会主任:
年 月 日
目 录
摘 要 1
1 引言 2
1.1 现状分析 2
1.2 目的及意义 3
1.3 研究内容 4
2 Visual Basic编程语言概述 5
2.1 Visual Basic简介 5
2.2Visual Basic程序设计简述 8
3 间接平差 24
4.1 平差软件整体展示 28
5算例演算 31
5.1水准网间接平差 31
6 结论 33
III
摘 要
测量平差是测绘类专业的一门重要的专业基础课程,是用于观测数据处理的一门应用数学 。但是因为其计算量比较大,这变使大家在学习和使用的时候感觉十分头疼。虽然有很多简化了的平差算法,比如高斯约化法, 但是这些算法一方面会影响计算精度,另一方面也不能有效的减少计算量。
平差计算是利用最小二乘原理消除观测值与起算数据之间的矛盾,求出各待定元素的平差值并评定精度。而在经典测量平差中,主要研究四种平差模型方程(条件平差、间接平差、附有未知参数的条件平差和附有限制条件的间接平差)的列立和求解,其牵涉到大量的矩阵运算,传统的人工计算工作量很大。随着计算机的出现,矩阵运算就变得轻松,而且计算机的运行速度快,精度高,特别是对于具有大量矩阵运算,计算机轻松解决。前提是要编好相应的程序代码。
本文运用visual basic语言编制了一个平差软件,主要对水准网和附合导线进行了平差的编制和软件程序界面的设计,实现的功能主要有对水准网数据和附合导线数据的平差计算,当然为了平差后能使用数据,本软件还设计了数据输出的功能,使界面更友好,方便用户使用。
关键词:水准网间接平差,visual basic ,visual basic界面设计(GUI)
1 引言
1.1 现状分析
Visual Basic是一种由微软公司开发的包含协助开发环境的事件驱动编程语言。从任何标准来说,VB都是世界上使用人数最多的语言——不仅是盛赞VB的开发者还是抱怨VB的开发者的数量。它源自于BASIC编程语言。VB拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统,可以轻易的使用DAO、RDO、ADO连接数据库,或者轻松的创建ActiveX控件。程序员可以轻松的使用VB提供的组件快速建立一个应用程序。
水准网是建立高程控制的一种常规方法。为了提高水准测量的效率,使得水准测量的内外业一体化,提高数据处理速度、精度和可靠性,外业观测上需采用更加科学、快速的作业模式,内业数据处理上需采用简便、可靠的数据处理软件。随着测绘仪器和计算机软件业的发展,目前市场上已出现多种控制网平差计算软件,不过有些平差软件界面复杂,难懂,需要一段时间的学习才能使用;还有就是这些软件,要么定权不合理,要么就价格昂贵。比如常用的平差易软件就是在Windows系统下用VC 开发的控制测量数据处理软件,就存在着权分配不合理,以致改正数过大,平差结果偏离真实值的问题。虽然发现了问题,然而由于VC语言的局限和作为收费软件,其源代码不公开等缘故,致使此类问题久久不能得到解决。
1.2 目的及意义
Visual Basic编程语言是一种可视化编程语言,通过近几年的发展,它已成为一种专业化的开发语言和环境。其依托于现代pc机的高性能,以计算机性能换取编程的简便。它把科学计算、结果的可视化和编程集中在一个可视化的环境中,不仅功能强,而且便于输入数据,易于掌握和使用。
测量平差是测绘类专业的一门重要的专业基础课程,是用于处理观测数据的一门应用数学。平差计算是利用最小二乘原理消除观测值与起算数据之间的矛盾,求出各待定元素的平差值并评定精度。而在经典测量平差中,主要研究四种平差模型方程(条件平差、间接平差、附有未知参数的条件平差和附有限制条件的间接平差)的列立和求解,其牵涉到大量的矩阵运算,传统的人工计算工作量很大,已往的测量数据处理方法需要编制特定的处理矩阵运算的程序,而且程序复杂,难度大。随着计算机的出现,矩阵运算就变得轻松,而且计算机的运行速度快,精度高,特别是对于具有大量矩阵运算,计算机轻松解决。前提是要编好相应的程序代码。
本文将分析经典测量平差中的条件平差模型和间接平差模型的特点,重点运用Visual Basic编程语言编写水准网间接平差和单一附合导线的平差程序软件。用Visual Basic语言编写出经典平差模型程序,运用到教学过程中使各种模型的公式推导与实际例题相结合,对于提高教学质量及加强学生对于《误差理论与测量平差基础》课程的理解具有重要的意义;对于我们即将走上工作岗位的同学来说,它将为我们处理各种实际工程的计算提供了极大的便利,也可以为今后更多的工程应用编程打下基础,提高工作效率和质量。同时也使我们在编程方面有更为深入的理解和掌握,对我们以后工作很有帮助,比如可编程计算器等测量辅助工具,这将会提高我们的工作效率。
1.3 研究内容
本设计主要运用Visual Basic编程语言,编制控制测量中水准网和单一导线的平差程序软件。实现的功能包括:1.水准网间接平差的平差值,在最小二乘法准则()要求下求出误差方程中的待定参数。2.单一导线和导线网的近似坐标推算:近似坐标的推算不仅是后续工作的基础,为条件方程系数阵的求取做准备,更能在此基础上计算坐标闭合差,检验外业成果的好坏。3. Visual Basic GUI界面设计:对于用户来说,程序可视化,同时又易懂,便于输入数据。4.平差数据结果输出:便于用户使用和查看。5.将几个平差程序集中在一个系统中,并生成exe可执行程序,在windows环境下通用,无需安装。因此,本平差软件让你的使用绝对省心。对每一个功能的实现,其后都附有应的算例。
2 Visual Basic编程语言概述
2.1 Visual Basic简介
2.1.1 Visual Basic的发展
Visual Basic (简称VB)是美国微软公司推出的windows环境下的软件开发工具,使用VB可以既快又简单地开发windows应用软件。Visual是指开发图形用户界面(GUI)的方法。Visual的意思是“视觉的”或“可视的”,也就是直观的编程方法。在VB中引入了控件的概念,如各种各样的按钮、文本框、复选框等,VB把这些控件模式化,并且每个控件都由若干属性来控制其外观、工作方法。这样,采用方法无需编写大量代码去描述界面元素的外观和位置,而只要把预先建立的控件加到屏幕上,就像使用“画图”之类的绘图程序,通过选择画图工具来画图一样,可视化程序设计语言除了提供常规的编程功能外,还提供一套可视化的设计工具,便于程序员建立图形对象,巧妙地把windows编程的复杂性“封装”起来。VB在原有BASIC语言的基础上进一步发展,包含了数百条语句、函数及关键词,其中很多与Windows GUI有直接关系。VB与BASIC之间有着千丝万缕的联系,如果学过BASIC语言的话,看到VB程序结构会感到很亲切。专业人员可以用Visual Basic实现其他任何Windows编程语言的功能,而初学者只要掌握几个关键词就可以建立实用的应用程序。随着微型计算机技术的飞速发展,美国微软公司以其具有多任务性、图形用户界面、动态数据交换、对象链接与嵌入等强大功能,而成为当今微型计算机操作系统的主流产品。许多商用软件公司为适应这一趋势推出windows境下的软件开发工具,如Visual C++,Delphi,PowerBuilder等等。但对于初学者希望在windows环境中开发一般的应用程序,VB无疑是较理想的。VB是目前众多windows软件开发工具中效率最高的一个。
2.1.2 VB的功能特点
1.面向对象
VB采用了面向对象设计思想,它基本思路是把复杂设计问题分解为个个能够完成独立功能——相对 简单对象集合。所谓“对象”就是个可操作实体如窗体、窗体中命令按钮、标签、文本框等面向对象编程就好像搭积木样员可根据和界面设计要求直接在屏幕上“画\"出窗口、菜单、按钮等区别类型对象并为每个对象设置属性。
2.事件驱动
在Windows环境下是以事件驱动方式运行每个对象的都能响应多个区别事件,每个事件都能驱动段代码——事件过程该代码决定了对象功能通常称这种机制为事件驱动事件可由用户操作触发也可以由系统或应用触发例如单击个命令按钮就触发了按钮Click(单击)事件该事件中代码就会被执行若用户未进行任何操作(未触发事件)则就处于等待状态整个应用就是由彼此独立事件过程构成。
3.软件Software集成式开发
VB为编程提供了个集成开发环境在这个环境中编程者可设计界面、编写代码、调试直至把应用编译成可在Windows中运行可执行文件并为它生成安装VB集成开发环境为编程者提供了很大方便。
4.结构化设计语言
VB具有丰富数据类型是种附合结构化设计思想语言而且简单易学此外作为种设计语言VB还有许多独到的处
5.强大数据库访问功能
VB利用数据Control控件可以访问多种数据库VB 6.O提供ADOControl控件不但可以用最少代码实现数据库操作和控制也可以取代DataControl控件和RDOControl控件
6.支持对象链接和嵌入技术
VB核心是对对象链接和嵌入(OLE)技术支持它是访问所有对象种思路方法利用OLE技术能够开发集声音、图像、动画、字处理、Web等对象于体
7.网络功能
VB 6.O提供了DltTML(Dynamic}tTML)设计工具利用这种技术可以动态创建和编辑Web页面使 用户在VB中开发多功能网络应用软件Software
8.多个应用向导
VB提供了多种向导如应用向导、安装向导、数据对象向导和数据窗体向导通过它们可以快速地创建区别类型、区别功能应用
9.支持动态交换、动态链接技术.
通过动态数据交换(DDE)编程技术VB开发应用能和其他Windows应用的间建立数据通信通过动态 链接库技术在VB中可方便地用C语言或汇编语言编写也可Windows应用接口(.API)
10.联机帮助功能
在VB中利用帮助菜单和F1功能键用户可随时方便地得到所需要帮助信息VB帮助窗口中显示了有关举例代码通过复制、粘贴操作可获取大量举例代码为用户学习和使用提供方便
2.2Visual Basic程序设计简述
2.2.1操作界面简介
在默认情况下,visual basic的操作界面包含了6个主要的窗口:主窗体,窗体窗口,工具箱窗口,属性窗口,工程管理窗口和代码窗口。 下面简要介绍VB中这几个窗口:
1.主窗体
图2.1 VB主窗体图
2.窗体窗口:
它是用来对应用程序进行界面设计的窗口,用户通过与窗体上的控件交互即可得到相应的结果,体现了VB的可视化编程思想。值得注意的是:每一个窗体窗口必须有一个唯一的名字。在
图2.2 VB窗体窗口图
设计状态下,为方便用户对控件的定位,窗体由网络点组成,可以通过“工具”|“选项”命令,在“通用”标签的“显示网格”中改变“宽度”或“高度”的值来改变网格的间距
3. 工具箱窗口
工具箱中包含有许多图标,它是各种控件的制作工具,利用这些工具,用户可以在窗体上设计各种控件。标准工具箱内只包含了19个控件(指针不是控件,其作用仅用于窗体和控件的移动或调整它们的大小),用户可根据需要添加其它控件到工具箱中。具体方法是选择 “工程”|“部件”命令打开“部件”对话框,在控件标签页中选择需要的部件,然后单击“确定”按钮,此时工具箱中将显示新添加的控件图标按钮。
图2.3VB工具箱窗口图
4.属性窗
用于设置对象的属性值,所有窗体或控件的属性都可以通过属性窗口进行修改。如对象名称、颜色、字体等。属性窗口包括以下几个部分:
图2.4VB属性窗口图
(1).对象列表框:单击下拉按钮可打开当前窗体对象列表,可选择要设定属性的对象。
(2).属性显示排列方式:有“按字母序”和“按分类序”两个标签。
(3).属性列表框:列出当前对象在设计模式下可用的属性及当前值,左栏显示属性名称,右栏显示相应的属性值,并可由用户设置该属性值。
(4).属性说明:显示当前属性的含义。
5.工程管理窗口
工程管理窗口保存了这个工程(或应用程序)所有的文件,如工程文件(.vbp)、窗体文件(.frm)、标准模块文件(.bas)和类模块文件(.cls)等。工程管理窗口上方有3个按钮,分别是:
图2.5 VB工程管理窗口图
(1).查看代码:切换到代码窗口,显示和编辑代码。
(2).查看对象:切换到窗体窗口,显示和编辑对象。
(3).切换文件夹:切换本窗口内文件夹显示方式。
6.代码窗口
代码窗口是专门用来进行程序设计的窗口,显示和编辑程序代码。每个窗体都有各自的代码窗口。打开代码窗口的方法:
图2.6 VB代码窗口图
(1)在工程管理窗口选择一个窗体或标准模块,并选择“查看代码”按钮。
(2)在窗体窗口双击控件或窗体本身。
(3)选择“视图”|“代码窗口”命令。
2.2.2 几个常用控件介绍
1.标签 Label
功能:用于显示文本(输出)信息,不能作为输入信息的界面。可以设置标签的背景颜色,本软件界面设计时就用到透明属性。
2. 文本框 TextBox
功能:是一个文本编辑区域,可以输入,编辑和显示正文内容。这是使用最频繁的一个控件。可以通过改变属性来改变文本大小,颜色等。
3. 命令按钮CommandButton
功能:接受用户输入的命令。当用户鼠标点击此按钮,便可以执行命令,实现所编功能。
2.2.3 VB编程语言书写 和变量声明
VB语言与其他语言书写有不同,所以有必要了解VB的书写方式
1. VB代码不区分字母的大小写。系统关键字自动转换每个单词的首字母大写;用户自定义行以第一次为准。
2. 语句书写自由。每一行可书写几个语句,之间用冒号分隔;一行最多255个字符;一条语句可分若干行书写,用续行符 (空格+下划线)连接。
3. 注释利于程序的维护和调试。用单撇号“‘” 以及“编辑”工具栏的“设置注释块”,则VB中注释语句会自动变为绿色,不参与运行。
4.VB中变量声明与其他编程语言的变量声明也有不同,下面简单的介绍下:
(1) 声明形式:
Dim 变量名 As 自定义类型名
例 Dim Student As StudType
(2) 引用:
形式:变量名.元素名
例 表示Student变量中的姓名,第4门课程的成绩,则表示如下:
Student.Name,Student.Mark(4)
(3) 赋值:
如:Student.Name=“王刚” Student.Mark(4)=98
其中常用的有声明形式和赋值,而赋值是使用最频繁的,本次编程中也大量使用赋值变量声明
2.2.4矩阵的在VB中的表示
我们知道平差计算中,矩阵计算是必须的,像系数矩阵,法方程矩阵等都要用到矩阵。所以用VB编制平差程序的要点和难点就是进行矩阵运算的编制。在了解矩阵的运算法则后,便可用VB语言编程了。
而用什么来表示矩阵呢?那就是数组,下面重点介绍下数组,这对程序的开发至关重要!
1.数组不是一种数据类型,而是一组相同类型的变量的集合。在程序中使用数组的最大好处是用一个数组名代表逻辑上相关的一批数据,用下标表示该数组中的各个元素,和循环语句结合使用,使得程序书写简洁。使用数组时需注意:
数组必须先声明后使用。数组分两类:一类是静态(定长)数组,第二累时动态(可变长)数组。像a(7,7)这便是静态数组,a(n,t)就是动态数组,其中的字母代表未知数。
2.静态数组,也就是定长的数组。如我们想将矩阵
1 2
3 4
这个两行两列的矩阵用VB来表示,可以表示为
Dim a(1 to 2,1 to 2) as double ‘变量声明
a(1,1)=1: a(1,2)=1: a(2,1)=1: a(2,2)=1
这样数组也变在VB中形成了,当然也可以联合for 循环使用,则语句
变得更为简洁。本程序中用到此联合,来求解矩阵运算。
3.动态数组是指在声明数组时未给出数组的大小(省略括号中的下标),当要使用它时,随时用ReDim语句重新指出数组大小。
如 redim a(1 to n ,1 to n) 这样便定义了一个动态的n维数组,注意声明必须是redim,不然程序会出错。
这里还需指明的是Dim、Private、Public变量声明语句是说明性语句,可出现在过程内或通用声明段;ReDim语句是执行语句,只能出现在过程内。在过程中可多次使用ReDim来改变数组的大小和维数。但使用ReDim语句会使原来数组中的值丢失,可以在ReDim语句后加Preserve参数来保留数组中的数据。使用Preserve时只能改变最后一维的大小,前面几维大小不能改变。 还有ReDim中的下标可以是常量,也可以是有了确定值的变量,这在编程中要注意!另外静态数组在程序编译时就分配存储单元,而动态数组在运行时才分配存储单元
2.2.5 VB中矩阵的运算
为了解决中矩阵运算问题,编好相应的矩阵运算代码是必须的,经过一个月的时间终于将矩阵运算的代码编成功,特别是矩阵求逆的运算。不过编制的矩阵求逆代码前提是满秩的,对于秩亏矩阵,就不适用了,由于时间原因,就没继续深入的研究其代码。当然了,我们平时见到的平差一般都是满秩的,所以此代码的适用性还是挺强的。下面就具体介绍下,各矩阵运算的代码和思想。
1.矩阵加减法
(1)这个代码比较容易编写,只要加矩阵中对应的数相加减便可以得到结果。
所以此处不给出代码
2.矩阵乘法
(1)这个代码编程的要点是跟据矩阵乘法的运算法则,即矩阵的没一行的数分别与另外矩阵的每一列对应的数相乘并全部进行相加。知道一个原则,编程就容易了,多次使用for循环实现!
(2)代码:
Public Sub jzcf(ByRef a() As Double, ByRef b() As Double, ByRef c() As Double)
m = UBound(a, 1)
n = UBound(b, 2)
ni = UBound(a, 2)
For i = 1 To m
For j = 1 To n
For ki = 1 To ni
c(i, j) = c(i, j) + a(i, ki) * b(ki, j)
Next
Next
Next
End Sub
3.矩阵转置
(1)这个代码编程的也比较简单,即将矩阵的行转化成列就行了。
(2)代码:
Public Sub jzzz(ByRef a() As Double, ByRef b() As Double)
m = UBound(a, 1)
n = UBound(a, 2)
For i = 1 To n
For j = 1 To m
b(i, j) = a(j, i)
Next
Next
End Sub
4.矩阵求逆
(1)这个代码编程很复杂,此代码运用的是高斯约化法进行矩阵求逆计算,编程的思想是先进行增广矩阵,然后用高斯约化法,将第一列中不是零的数找出,进行约化,即将每行数字除以开头数字,使每行开头不是零的数化为1,之后减去第一行,这样这行的第一列的开头就为零了。用这种方法就可以将矩阵变为上三角矩阵,最后就得到矩阵求逆结果。。
(2)代码:
Public Sub jzqn(ByRef qa() As Double, ByRef na() As Double)
Dim a()
n = UBound(qa, 1)
ReDim a(n, 2 * n)
For i = 1 To n
For j = 1 To n
a(i, j) = qa(i, j)
Next j
Next i
For i = 1 To n
For j = n + 1 To 2 * n
If j - i = n Then
a(i, j) = 1
Else
a(i, j) = 0
End If
Next j
Next i
For i = 1 To n
If a(i, i) = 0 Then
For q = i To n
If a(q, i) <> 0 Then
For W = i To 2 * n
zj = a(i, W)
a(i, W) = a(q, W)
a(q, W) = zj
Next W
Exit For
End If
Next q
If q > n Then MsgBox "此矩阵不可逆": Exit Sub
End If
For K = 2 * n To i Step -1
a(i, K) = a(i, K) / a(i, i)
Next K
For j = i + 1 To n
If a(j, i) <> 0 Then
For K = 2 * n To i Step -1
a(j, K) = a(j, K) / a(j, i) - a(i, K)
Next K
End If
Next j
Next i
For i = n To 1 Step -1
If a(i, i) = 0 Then
For q = i - 1 To 1 Step -1
If a(q, i) <> 0 Then
For W = i To 2 * n
zj = a(i, W)
a(i, W) = a(q, W)
a(q, W) = zj
Next W
Exit For
End If
Next q
End If
For K = 2 * n To i Step -1
a(i, K) = a(i, K) / a(i, i)
Next K
For j = i - 1 To 1 Step -1
If a(j, i) <> 0 Then
xxx = a(j, i)
For K = 2 * n To 1 Step -1
a(j, K) = a(j, K) / xxx - a(i, K)
Next K
End If
Next j
Next i
For i = 1 To n
For j = 1 To n
na(i, j) = a(i, j + n)
Next j
Next i
End Sub
2.2.6程序控制语句
1.MsgBox语句
VB中提示性语句,格式为:MsgBox " 语句" (‘需要键入的提示语’)
例如:
MsgBox "账号不对,请重试"
运行结果:则出现一个对话框,提示用户。
2.print语句
VB中最基本的输出语句,可以将打印的内容放到form窗口中,也可以放在以图片控件为容器的控件中,还可以将数据进行输出,比如输出到txt文本中,具体的,后面展示。
3.if语句
If <表达式> Then
<语句块1>
Else
<语句块2>
End If
If 语句可以循环嵌套,以实现比较复杂的逻辑结果。
4.循环语句
(1)for语句格式:
For 循环变量=初值 to 终值 [Step 步长]
循环体;
next
注意:循环参数中,i用于控制循环次数,step是步长使用前应计算好,结尾必须有next不然程序会出错!
(2)do...while语句格式:
Do { While|Until }<条件>
语句块
[Exit Do 语句块]
Loop
注意:do...while循环是用于控制循环次数未知。
5. 循环控制语句
在循环执行到一定程度的时候,不希望它继续执行,则要使用循环控制语句,包括continue和break。
(1)continue出现时,不执行continue后的内容,直接跳过本次循环,执行下一次循环。
(2)Break出现时,不执行break后的内容,直接跳出循环,执行循环后的语句。
2.2.7控件数组
控件数组是由一组具有共同名称和相同类型的控件组成,数组 中的每一个控件共享同样的事件,它可以运用控件数组可以再程序运行时创建一个控件的多个实例,并能很好的控件在程序运行时到底显示多少个对象,利用for-next循环结构,就可以简单地为控件数组的各个元素设置相同的属性,同时它也可以节省代码,增加可读性,减少了内存的开销。控件数组可以分为静态数组及动态数组两种。
3 间接平差
3.1 间接平差原理
间接平差就是在最小二乘准则要求下求出误差方程中的待定参数,在数学中是求多元函数的极值问题。间接平差的函数模型为:
平差时,一般对参数都要取近似值,令
代入上式,并令
其中,为观测值的近似值,所以是观测值与其近似值之差,由此可得误差方程
设有n个观测值的方程为:
令
,
则得误差方程为:
令:
可得平差值方程的矩阵形式:
, (3-2-1)
按最小二乘原理,上式的必须满足的要求,因为t个参数为独立量,故可按数学上求函数自由极值的方法,得:
移项,转置后得:
(3-2-2)
以上所得(3-2-1)和(3-2-2)式中的待求量是n个V和t个,而方程个数也是n+t个,有唯一解,称此两式为间接平差的基础方程。
解此基础方程,一般是将(3-2-1)式代入(3-2-2)式,以便先消去V,得:
(3-2-3)
令:
,
上式可简写成
(3-2-4)
式中系数阵为满秩,即,有唯一解,上式称为间接平差的法方程。解之得:
或:
将求出的代入误差方程(3-2-1),即可求得改正数V,从而平差结果为:
,
3.2 间接平差程序设计流程图
输入观测数据
输入必要信息:
总观测值数量,
必要观测值数量
软件自动识别用户是否正确输入数据,以及有无数据输入的不完整。接着识别各段高差的前后视点是否为已知点并组建系数矩阵A和W
判断
否
所有观测高差是否已处理完,数据是否正确
是
定权
计算法方程矩阵,
求解未知参数,
精度评定。
结束
4 平差软件界面设计
4.1 平差软件整体展示
4.1.1登陆界面
图4.1平差软件登录界面图
为了方便用户使用和保存用户隐私,特做了平差软件的登陆窗口。只有账号密码正确才能进入,使用软件。而注册和找回密码用到数据库的知识,需用VB和数据库(可以是SQL数据库,也可以是access数据库)联合开发。当然了,由于时间关系,注册和找回密码功能还没开发,以待时间充裕时再进行开发。
4.1.2平差软件主界面
图4.2平差软件主要界面图
左边按钮为平差功能,有水准网间接平差,附和导线平差,水准网的间接平差,闭合导线平差。最后一个为误差椭圆,用来检测各导线的误差精度。中间的是坐标系统,用来显示所观测导线网,看输入的导线网与实测的导线网是否一样,可以及时纠错。当然还可以显示导线网中的误差椭圆。
4.1.3水准网间接平差
图4.3水准网间接平差主要界面图
上图为水准网间接平差主界面,只要鼠标点击主界面中的水准网间接平差按钮就能进入该界面。该界面中右边为输入观测数据。此水准网间接平差能实现的功能是进行水准网间接平差计算(改正数跟平差值计算),此外还设计了几个实用功能,如对平差后的结果进行输出(输出的格式为txt文本格式),对数据进行清空,方便第二次输入。还设有返回主界面的功能,进行其他功能的转化。当然了还开发了如查看系数矩阵,法方程等功能
5算例演算
5.1水准网间接平差
以《误差理论与测量平差基础》一书中7-4节中的例7-8水准网间接平差为为例,水准路线图,点的编号,数据如下表所示:
图5.1计算简图
路线号
观测高差(m)
水准路线长度(km)
已知高程(m)
1
2
3
4
5
6
7
+1.359
+2.009
1.1
1.7
2.3
2.7
2.4
1.4
1.6
HA=5.016
HB=6.016
打开平差软件进入水准网间接平差后,准确输入数据点击改正数计算或平差值计算,便会得到结果,当你也可以进行数据输出。经验证,结果可靠。
图.5.2水准网间接平差结果图
图5.3水准网间接平差数据输出图
6 结论
进行平差计算离不开矩阵计算,一般的矩阵都很大,手算起来很不方便。过去能通过高斯约化法进行计算,但过程很繁琐,计算精度也不高,而且还容易出错。现在可以借助计算机,快速进行高精度计算,只要编程正确便可以得到平差结果。这样可以大大的提高测量人员工作效率,避免负重繁琐的计算。
本程序通过对平差理论的讨论,并借助Visual Basic编程语言,编制成了平差软件。可以在windows环境中实现水准网的间接平差,和附合导线网平差,无需安装。此外软件还编写了其他实用功能,如平差结果的输出,改正数跟平差值用不同的颜色表示,附合导线角度可以以度分秒的形式输入,另外还考虑了方位角的输入(可以是坐标法也可以是直接输入方位角)。但是由于时间的原因,本软件的其他平差功能还没开发;已编制的程序还有些地方不够完善,普遍使用性还有待考察和研究。像水准网间接平差中,点的编号不能随便编写,这样不利于用户输入。而附合导线平差只适用于单一附和导线,还不能使用于一般的附和导线网,这是后期有待解决的。而程序代码方面,由于时间紧张,只考虑了功能的实现,而没有考虑代码的精炼简洁,对源代码的调整,只有后期处理了。
参 考 文 献
[1] 武汉大学测绘学院测量平差学科组。误差理论与测量平差基础[M]。武汉:武汉大学出版社,2006
[2] 武汉大学测绘学院测量平差学科组。误差理论与测量平差基础习题集[M]。武汉:武汉大学出版社,2006
[3]张正禄,李广云,潘国荣等。工程测量学[M]。武汉:武汉大学出版社,2005
[4]陈杰,张增强,余锋等。MATLAB宝典[M]。北京:电子工业出版社,2010
[5]董霖。MATLAB使用详解[M]。北京:电子工业出版社,2009
[6] 陶忠刚,王宝山,王勇等。MATLAB软件在测量平差中的应用[J]。焦作:焦作工学院学报,2002,21(5)
[7] 田社平。基于MATLAB的间接测量数据处理[J]。上海:中国测试技术,2004,2
[8] 曾晓,罗发明。利用MATLAB实现水准网条件平差[J]。贵溪:铜业工程,2008,4
[9] 刘慧颖。MATLAB R2007基础教程[M]。北京:清华大学出版社,2008
[10] 卓力格图,詹洁晖。MATLAB软件在测量平差中的应用[J]。武汉:地壳形变与地震,2000,20(3)
7致谢
通过这三个月来的忙碌和学习,本次毕业论文设计已接近尾声,作为一个大专生的毕业设计,由于经验的匮乏,难免有许多考虑不周全的地方,在这里衷心感谢指导老师的督促指导,以及一起学习的同学们的支持,让我按时完成了这次毕业设计。
在写论文过程中,我遇到了许许多多的困难。在此我要感谢我的指导老师王克晓老师给我悉心的帮助和对我耐心而细致的指导,我的论文较为复杂烦琐,但是王克晓老师仍然细心地纠正图中的错误。同时感谢我院、系领导对我们的教导和关注;感谢大学三年传授我们专业知识的所有老师。还有谢谢我周围的同窗朋友,他们给了我无数的关心和鼓励,也让我的大学生活充满了温暖和欢乐。如果没有他们的帮助,此次毕业论文的完成将变得困难。他们在我设计中给了我许多宝贵的意见和建议。同时也要感谢自己遇到困难的时候没有一蹶不振,取而代之的是找到了最好的方法来解决问题。最后,感谢生我养我的父母。谢谢他们给了我无私的爱,为我求学所付出的巨大牺牲和努力。
35
展开阅读全文