远程与继续教育学院
本科毕业论文(设计)
题目:《控制测量简易平差程序设计》
学习中心: 浙江分院
学 号:
姓 名:
专 业:
指导教师:
2014 年 3 月 5 日
中国地质大学(武汉)远程与继续教育学院
本科毕业论文(设计)指导教师指导意见表
学生姓名: 学号: 专业: 毕业设计(论文)题目:
中国地质大学(武汉)远程与继续教育学院
本科毕业设计(论文)评阅教师评阅意见表
学生姓名: 学号: 专业: 毕业设计(论文)题目:
论文原创性声明
本人郑重声明:本人所呈交的本科毕业论文《控制测量简易平差程序设计》,是本人在导师的指导下独立进行研究工作所取得的成果。论文中引用他人的文献、资料均已明确注出,论文中的结论和结果为本人独立完成,不包含他人成果及使用过的材料。对论文的完成提供过帮助的有关人员已在文中说明并致以谢意。
本人所呈交的本科毕业论文没有违反学术道德和学术规范,没有侵权行为,并愿意承担由此而产生的法律责任和法律后果。
论文作者(签字):
日期:2014年3月5日
摘 要
控制测量简易平差程序设计是现代测量测绘工作中必不可少的重要内容,其主要是为了用于对控制网测量数据进行平差处理,以最大程度的减小测量误差,提高测量工作的准确率和科学性。现本文就主要探讨了控制测量简易平差的程序设计问题。文章首先分析了平差程序的计算特点,指出在设计控制测量简易平差程序时的基本要求和基本步骤,并从结构化程序设计与控制网的数据结构两方面论述了设计原理。继而以基于MatrixVB 的测量平差程序设计为例,详细介绍了控制测量简易平差程序的设计过程。并对本案例的设计开发与实现结果进行了分析,指出该程序设计是非常可行的。
关键词: 1、测量;2、条件平差;3、间接平差;4、MatrixVB ;5、程序设计
目 录
一、测量平差程序的计算特点 .................................. 1
二、测量简易平差程序的设计基本要求和基本步骤 ................ 3
(一)基本要求 ......................................... 3
(二)基本步骤 ......................................... 3
三、控制测量简易平差程序的设计原理分析 ...................... 4
(一)结构化程序设计 ................................... 4
(二)控制网的数据结构 ................................. 5
(三)图的数字化方法对比分析 ........................... 7
(四)控制网的数据结构组成 ............................. 7
四、基于的测量平差程序设计实例分析 .......................... 9
(一)测量平差的基础与模型 ............................. 9
(二)测量平差程序开发方案的确定 ....................... 9
(三)基于MatrixVB+VB6.0的平差程序设计 ............... 10
(四)程序的开发及实现 ................................ 11
(五)平差求解的实例分析 .............................. 12
(六)本节小结 ........................................ 14
五、结束语 . ................................................ 15
致谢 . ...................................................... 16
参考文献 . .................................................. 17
在以往的测量工程中,无论多么复杂的控制网测量平差都是要经过人工计算而得出,不但计算作业量非常繁重,而且不能完全保证计算结果的准确性。而在今天,计算机技术和软件开发技术日趋成熟,通过计算机强大的运算能力,在一定的软件基础上,可以实现测量数据平差的自动化处理。在平差软件的应用中,无论控制网网形多么复杂,或是观测量增多多少,都能够在最短的时间内,得出最准确的计量结果。这种平差处理方式极大的提高了测量作业的工作效率,降低了测量误差,促进了测量测绘行业的发展。虽然当前市场上已经有很多较为成熟的平差软件,但是在一些工程项目中,还仍然需要技术人员研发符合实际需求的平差程序。以下本文就对控制测量简易平差程序的设计问题进行探讨研究。
一、测量平差程序的计算特点
测量平差程序是建立在计算机平台上的一种软件程序,其在计算的过程中无需花费人的过多精力,人只需要按照程序流程操作计算机,就能够快速精准的得出测量平差的计算结果。这种计算方式相较于传统的手工计算而言,不但计算速率快、准确率高,还能减轻人的工作量,实现数据处理的自动化。
虽然手工计算平差和计算机计算平差的最终目的是一致的,都是为了求得最准确的计算结果,减小测量误差。但是在计算的过程中,手工计算和程序计算的方式方法和注意问题的角度都是有很大差别的。这是因为在手工计算只能够,所有的数据和计算过程都是由人来操控,因此在计算时只需要注意计算过程中的基本问题即可。但是在计算机程序软件计算平差的过程中,计算机程序软件本身并不能具体识别各种数据,所有的数据对于计算机程序软件而言都是抽象的,因此在设计程序软件时,不但要考虑数据本身的计算问题,还要考虑计算机的性能以及其处理问题的规律。
正是因为如此,我们在进行测量简易平差程序设计时,要明确程序计算时所采用的平差处理依据与手工计算时所采用的平差处理依据是存在较大差异的。在手工计算平差的过程中,通常所注重的问题的尽量降低计算量,因此当必要观测数超过多余观测数时,一般选择条件平差;而反之则选择间接平差。但是程序软件计算平差时,计算机高效的计算能力使得再繁重的计算量都能快速完成,因此无需注重降低计算量的问题,而应当
将注意力放在如何实现程序计算的问题上,也就是如何找出程序计算方法的规律性 ,使其更利于程序设计的技术实现这一问题上。
二、测量简易平差程序的设计基本要求和基本步骤
(一)基本要求
和一般的程序设计一样,测量简易平差程序的设计也应当按照一定的基本要求进行设计。首先,所设计的程序应当具备逻辑清晰、结构简单、易读取、易扩展等要求;其次,所设计的平车程序在运算的过程中应当具备速度快的特点,也不能占用过多的内存,内存与外存应当尽量避免频繁交换。第三,平差程序设计中所采用正确合理的数学模型,且要具备一定的科学先进行,要求该数学模型计算所得结果的准确度高;第四,所设计的平差程序应当具有较强的适应能力,要能够移植,能够在各种形式下都能满足计算需要。最后,平差程序设计要从用户的角度出发,尽量方便用户的使用,因此程序的操作应当尽量简便。这些设计基本要求不但要求在总体设计时遵守,还要求在整个设计过程中的每个环节都遵守。
(二)基本步骤
测量简易平差程序的基本设计步骤主要可以概括为以下几点:结构总体设计、数据结构设计、确定软件各组成部分的算法及数据组织、选定某种表达式来描述各种算法、程序编写、程序调试、编写用户使用说明。这些步骤是在任何一种平差程序的开发和设计过程中都应当涉及到的环节,为平车程序设计的基本步骤。
三、控制测量简易平差程序的设计原理分析
(一)结构化程序设计
近半个世纪以来,计算机技术和软件开发技术都在不断的完善和成熟,各种各样的软件开发需求也在不断增多。为了提高软件开发效率,实现大规模、工业化软件开发生产,IT 人员提出了结构化程序设计的软件开发方案。目前,结构化程序设计思想已经基本形成,而C 语言是最能反映这一思想的标志,现如今的计算机软件程序开发大都是采用C 语言作为最主要的开发语言。另外,提出模块这一概念也是结构化程序设计思想成熟的重要表现。以下我们就来对其基本原理和相关理论进行简单介绍。
1、模块化程序设计
在软件程序开发的过程中,模块就是指固定某一用途的数据结构或程序代码。也就是说,一种模块在程序开发过程中只执行一种任务。并且在C 语言中,所有的模块都会与某个函数相互对应。而模块化,则是指在开发某一软件时,将软件需要开发的内容分解,使其成为多个小模块。并且这些小模块可以独立自主的开发、测试,当所有的小模块都已经开发调试完毕之后,将其组装在一起,就能够得到预期要开发的软件。将软件程序的开发实行模块化不但能够降低软件的开发难度,而且可以使软件程序的结构框架更加清晰明了,程序的设计内容也更容易被理解和应用。
需要注意的是,在软件程序的模块化过程中,并非随意分解软件成为多个小模块,而是要按照一定的分解原则来划分模块。首先要按照功能来划分小模块,小模块的功能要单一且具体;其次要保证小模块的自主独立性、较强的内聚性与较弱的耦合性。这样才能使各个小模块的开发的过程中实现自主独立开发与测试,并且也更利于模块移植。为了能够减小模块的耦合性,可以尽可能多的采用局部变量和层次结构分析。
例如在平差程序模块化的分解过程中,可以先将平差程序分解为数据输入、数据处理、数据输出等三大部分,再分别对各个部分细分,再细分,直到不能细分为止。具体来讲,平差程序模块化可由图3-1来表示:
图3-1 平差程序模块化
(二)控制网的数据结构
之所以要进行平差程序设计,正是为了要处理测量控制网的各种数据。因此在设计测量简易平差程序时,要首先理解控制网的数据结构的相关理论。
1、概念分析
一个具体的控制网通常是以图形方式直接绘出的,为了用计算机进行控制网的平差计算,就需要将具体的网形转化为一系列的数据,然后才能输入计算机进行处理。这种将网形转化为一系列数据的工作和过程称为“网形数字化”。网形数字化所得到的一组数据就是控制网的数据结构。
数据结构所涉及的范围是广泛的。在每个具体问题中,数据元素及其关系是确定的,而且都有其特定的含义。对测量平差而言,其数据结构就是表达一个控制网的全部数据的集合,包括已知数据、观测数据、网形数据(网图数据)及其关系。
2、图的数字化
在控制网的数据结构中,不可避免的要对各种图形进行数字化转换,这就需要用到图论的概念。这是一种研究事物之间关系的数学方法,其数字化的表现方法主要有三种,即相关矩阵,邻接表和边目录。我们以图3-2图3-3为例,来分别介绍三种数字化表达方法。
图3-2 具有四个点的无向图 图3-3具有四个点的有向图
(1)相关矩阵:如果i ,j 两点有边相连,则矩阵第i 行、第j 列元素为1,反之为0;对角线上元素永远为零。
对于如图3-2所示的无向图,用相关矩阵表示如下:
⎛0 1
1 0⎝110⎫⎪011⎪ ⎪101⎪110⎪⎭
无向图特点:关于主对角线对称,通常只需写出一半即可。
对于如图3-3所示的有向图,用相关矩阵表示如下:
⎛0 1
0 0⎝110⎫⎪010⎪ ⎪101⎪100⎪⎭
有向图特点:通常不是对称矩阵,需要写出矩阵全部元素。
(2)邻接表:按照图中的顶点顺序,将与该点边相连的所有点(可达顶点)排成一行,所有这些行所构成的表叫邻接表。
对于如图3-3所示的有向图,用邻接表表示如下(表3-1):
该表可由对应的相关矩阵产生。为节省内存,通常将邻接表排成一行。为识别可达顶点所属的行号,需要给出表3-1中每行含有的可达顶点数,从而构成可达顶点数表和可达顶点表。如表3-2所示:
表3-1邻接表
表3-2邻接表
在表3-2中,第一行为可达顶点数表;第二行为可达顶点表。
与有向图类似,无向图的邻接表也可以由相应相关矩阵产生。
(3)边目录:按照图的定义,图由顶点集V 和边集E 组成。然而,边集实际上包含了所有点集的信息(除非图中包含孤立的点,这种情况在控制网中是不会出现的),所以可以只用边集E 来表示图。这种用两端点号表示图中边所构成的表成为边目录。下面对于有向图的例子做简单的说明。
对于如图3-3所示的有向图,用边目录表示如下(表3-3):
表3-3有向图的边目录
在表3-3中,每一列表示一条边,第一行中的点为起点号,第二行中的点为终点号。 对于无向图,表示方法与有向图类似。需要注意的是,为了使每条边只表示一次,采用最小点号原则。也就是起点号由小到大排列,边不重复表示。
以上三种方法,在数学上是统一的。也就是说,只要知道一种表示,其它两种就可以相应生成。
(三)图的数字化方法对比分析
在将控制网的图形数据转化为数字数据时,采用上述三种表达方式都可以实现数字化效果,即都能够表现出图形的所有点和所有边。但是相对来讲,采用相关矩阵的数字化转换方法会出现较大的冗余度,也就是说,对角线上的所有元素都将表现为0,而其他位置则出现大量的数据冗余,并且其无法表达出图形各个边的邻接关系,非常不利于控制网平差的计算。因此一般多采用邻接表或边目录的数字化方法。相对来讲,前者在有向图中的数字化转换中会占用更少的空间。在无向图的转换中,两者的性能则相差无几,均可采用。
(四) 控制网的数据结构组成
在控制网的数据结构形成过程中,首先要将实际测量工程中的各项内容与图的各个元素相互照应。如图的顶点就应当照应测量工程中的实际测量控制点;测量控制网的方向观测值等有向边应当照应有向图的边;测量控制网的单向测距边应当照应无向图的边,等等。具体来讲,控制网的数据应当包含已知数据、观测数据和网形数据,在程序设计的过程中,我们可以采用上述数字化方法来将各个数据之间的关系表达出来,构成控制网的数据结构。
另外,在形成控制网的数据结构时,要注意数据结构的充分性与必要性。所谓充分
性就是指在控制网的数据结构要充分满足控制网的构成需要,也就是说要有足够多的数据来充分表达控制网图形的点与边的关系。而必要性则是指数据结构中所包含的数据都是必要的,而不是冗余多余的。相对来讲,在程序设计中,人们往往只重视较易发现的充分性条件,而忽视难以发觉的必要性条件。这是因为若数据结构中含有冗余数据,则会自动将算法实现的难度转嫁给用户,使其在使用中多输入一些无关紧要的冗余信息条件,增大了用户操作的复杂性和难度。因此可以说,在平差程序的设计中,必要性条件的满足程度决定了该程序的完善程度。必须要引起我们的重视。
四、基于的测量平差程序设计实例分析
为了能够更好的介绍控制测量简易平差程序设计和实现的方法,本文决定以某隧道施工测量中所开发的平差程序为例进行详细探讨。在某隧道工程中,设计施工人员为了能够更精准的掌握隧洞内的平面控制导线网、高程控制水准网和测角三角网,要对这些控制网的数据进行平差处理。基于实际工程的需要,要重新开发一套平差程序。本工程中决定采用矩阵计算能力,在MatrixVB 平台上,用VB6.0可视化编程和Excel 表格数据输入的方法来开发测量简易平差程序。具体的开发和设计过程如下所示:
(一)测量平差的基础与模型
在测量工程中,之所以会进行数据的平差处理,是因为在测量中存在在着多余观测,也就是说,测量平差是建立在多余观测基础上的,并在此基础上按照一定的数学模型以及原则来调整观测结果,以此来提高观测值的精度。在测量平差的处理中,最主要的工作任务就是要将有误差的观测值之间的不符值消除掉,得出未知量的最或然值,并评定该值的精度。
为了更好的完成平差程序的设计,我们首先要了解一些平差的概念和数学模型。在平差中需要用到的几个量主要有观测值个数n 、必要观测数t 、多余观测数r 。其中,r=n-t。平差的数学模型主要是指用数学关系来表现几何模型的几何关系及其相互之间的内在关系。
(二)测量平差程序开发方案的确定
Visual Basic 6. 0是一种可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言,可用于开发Windows 环境下的各类应用程序,在Visual Basic(以下简称VB) 环境下,可以利用事件驱动的编程机制、新颖易用的可视化设计工具进行程序开发,可以使用Windows 内部的广泛应用程序接口(API)函数,动态链接库(DLL)、对象的链接与嵌入(OLE)、开放式数据连接(ODBC)等技术,高效、快速地开发Windows 环境下功能强大、图形界面丰富的应用软件。VB 的优点在于简单易学、编程效率高,其缺点在于面向对象性不够完善、执行效率较低,运行大型的、复杂的程序时,显得不足。
MatrixVB 是由第三方提供的COM 组件,包含了大量与MATLAB 相似的函数与调用语法,可以加强VB 数学运算与图形展示功能,在VB 程序代码中可以像使用VB 自己的函数一样使用MatrixVB 的函数,而且可以不依赖于MATLAB 的环境在Visual Basic中完
成矩阵运算与图形绘制显示等功能,此外Ma-trixVB 还有小巧灵活的优点(只有11. 2MB 大小) ,所以使用起来简单,编程效率高。MatrixVB 函数库的功能大致可分为8大类(矩阵运算、运算符重载、图形图像处理、最优化运算、多项式、信号处理、随机与统计分析、控制系统) 。
涉及到矩阵运算的数值计算、图像处理等,MATLAB 可以很好解决,但仅仅使用MAT-LAB ,程序界面不够简洁美观,要求使用者有较高的专业水平,而且MATLAB 过于庞大,我们往往只需使用其中很小一部分功能就能解决问题。若仅仅使用VB 来实现,则很多在MATLAB 看来很简单的任务(例如矩阵的定义、矩阵运算、直方图显示) 都需要从底层写程序,工作量十分繁重。因此,可以采用MatrixVB+ VB 集成技术,取MATLAB 和VB 二者之长,开发出简洁灵巧、美观实用,功能强大的程序。这正是此次测量平差程序开发的思路,在VB 应用中引人MatrixVB 的方法。
(三)基于MatrixVB+VB6.0的平差程序设计
1、安装MatrixVB
系统要求:内存512M 以上,硬盘空间1G 以上; 操作系统要求Windows XP及更高版本; 在安装盘上找到Matrixvb4510, exe,双击后启动安装程序,并按照安装向导安装; 然后在“开始~运行”菜单中用命令regs- vr32 mMatrix. dll注册。
2、启动VB 开发环境并建立“标准EXE" 项目。
3、为项目引入MatrixVB:在project 下拉菜单中单击References ,在弹出的对话框中选中MMatrix 项目,系统将加载MatrixVB 的动态链接库MMatrix. DLL。
可以将MatrixVB 的函数与命令调用嵌入到VB 程序代码中实现相应的功能,其函数与命令的使用方式类似于在MATLAB 环境中的使用方式,但要注意矩阵的赋值、各种矩阵运算操作的区别,其数学运算符既不同于VB ,也不同于MATLAB 。另外,矩阵是由数行和数列数据组成的,而表格也是由行、列组成,所以为了矩阵数据的形象直观输入,调用Excel 表格进行输人,代码如下:
Dim xExcel As Excel. Application ’定义EX-CEL 对象变量
Dim xBook As Excel. Workbook ; Dim xShe-et As Excel. Worksheet
Set xExcel=CreateObject(”Excel. Applica-tion")' VB中,启动EXCEL
Set xBook=xExcel. Workbooks. Add ’
新建一个EXCEL 工作簿
Set xSheet=xBook. Worksheets(1) ’
选定工作表1
xExcel. Visible=True
MatrixVB 中矩阵的运算操作:
DimA ,B ,C As Matrix’定义矩阵变量
Set C=plus(A, B)’矩阵相加;Set C=minus(A, B)’矩阵相减
Set C=times(B, 2)’数乘矩阵;Set C=times(A, B)’矩阵点乘
Set C=mtimes(A, B)’矩阵相乘;SetC=rdivide(A, B)’矩阵点除
Set C=mrdivide(A, B)’矩阵相除;SetC=inv(B)’求逆矩阵
Set C= ctranspose(B)’矩阵转置;Set C=uminus
Set C=power(B, 3)’矩阵数字求幂。
(四)程序的开发及实现
1、程序运行主界面有“条件平差”、“间接平差”、“设置保存”三个选项卡,选取前两项时,会弹出对应的平差步骤窗口,按步骤提示,可以对照进行手工平差计算,方便了解平差解算的过程和获得过程参数的大小。
2、变量定义及赋值
公共变量定义:
Dime As Matrix’权阵
Dim V As Matrix’改正数向量
条件平差变量定义:
Dim A As Matrix’条件方程系数阵
Dim W As Matrix’闭合差向量
Dim Naa As Matrix’法方程系数
DimK As Matrix’联系数向量
间接平差变量定义:
Dim B As Matrix’误差方程系数阵
Dim 1 As Matrix’常数项向量
Dim Nbb As Matrix’法方程系数
Dim x As Matrix’参数改正数向量
根据矩阵行、列大小,将输人到EXCEL 表格中的各单元格数值赋值给矩阵变量
For i一1 To Val(Textl. Text)’矩阵的行数For j=1 To Val(Text2. Text)’矩阵的列数
B, r2 (i, j)=Val(xSheet. Cells(i,j))’矩阵元素赋值
Next j
Next i
3、基于VB + MatrixVB和平差函数模型的平差计算过程和结果如下:
条件平差中:
求解法方程系数Naa=A×P-1×AT ,即:Set Naa = mtimes(mtimes(A, inv(P)),ctrans-pose(A))
联系数向量K=-Naa×W ,即:Set K=uminus(mtimes(inv(Naa},W))
改正数向量V=P-I×AT ×K ,即:Set V=mtimesCmtimes ( inv(P},ctranspose(A)),K)
间接平差中:
求解法方程系数Nbb=BT×P ×B ,即:SetNbb=mtimes(mtimes(ctranspose(B),P) ,
B)
参数改正数向量x=Nbb-1×BT ×P ×l ,即:Set x=mtimes(mtimes(mtimes(inv(Nbb),ctranspose(B) ) , P) , l) 观测量改正数向量V=B×x 一l ,即:Set V = minus(mtimes(B, x) ,l)
(五)平差求解的实例分析
为便于演示和手工平差验证,现取一个简单案例进行说明:如图4-1所示水准网中,已知水准点A 的高程为HA=237. 483m ,为求B, C, D 三点高程,进行了水准测量,测得高差及水准路线的长度如图所示,试分别按间接平差和条件平差求解。
图4 -1水准网图
1、间接平差方法:
分别选取B,C,D 三点高程为参数x1、x2、x3,列误差方程(单位:mm):
v1=xi
v2=-x1+x2+23
v3=x2
v4=x2-x3-14
v5=x3
在“间接平差”界面点击“输人系数阵B ”按钮,自动运行Excel ,输入系数阵(先输人B 的大小5行3列) ,系数为0可以不输入,输人完成保存,点击“确定”,即弹出MatrixVB 的矩阵窗口,说明B 已存储。
依次输人1向量(误差方程中的常数向量) 和权阵P(取10km 观测高差为单位权观测) ,再依次点击各平差步骤中“求系数阵Nbb", “求参数改正数向量”、“求改正数向量V", “求单位权中误差”按钮,会得到对应的结果矩阵对话框,间接平差法求解即完成.
保存工程:单击“设置保存”选项,填写相关设置(如计算日期、项目名称、观测者、记录者、计算者、测量单位、平差方法等) 即将项目信息、平差过程、结果保存为txt 文本文件。
2、条件平差方法:
方法和间接平差类似,主要是列立的条件方程和间接平差中的误差方程以及函数模型不一样。
3) 精度评定:
两者得到的平差值单位权中误差均为24.3,另外,还可以计算出间接平差中所选参数平差值和条件平差中观测量平差值方差一协方差阵进而得到中误差评定精度,然后再利用MatrixVB 的图形绘制功能画出精度分布直方图(调用MatrixVB 中的bar 函数绘制直方图) ,如图4-2:左边是选定的B,C,D 三点高程对应三个参数平差值的中误差直方图,右边是五段观测高差平差值的中误差直方图(单位:mm) 。
图4-2精度分布直方图
两种平差方法得到的结果即改正数向量和单位权中误差完全一样,并且与手工平差验算结果一致,这也证明:因为条件平差和间接平差都是基于最小二乘原理,平差准则VTPV=min相同,所以平差结果相同。
(六)本节小结
在本隧道工程的测量平差程序设计中,采用了MatrixVB+VB的设计方法,不但把MatrixVB 本身具备的强大矩阵计算能力充分利用起来,还通过结合VB6.0的可视化编程来弥补了其不够灵活的缺陷,使两者呈互补状态,再加上Excel 表格的辅助,使得矩阵数据的输入更加简单方便,使用户在使用该平差程序时能够全面了解控制网的数据信息,并能够在最短的时间内完成数据输入和平差计算,得出最终输出结果。但是需要指出的是这种平差程序设计虽然简单易用,但其受程序编程的限制,不能根据观测值直接自动生成方程,而需要用户自足输入,这一点增大了用户的作业量,适合在中小型数据量的测量工程中使用。
五、结束语
本文通过介绍平差程序设计的相关概念和理论基础,研究了某实例工程中的测量平差程序的开发、设计和实现。由本文论述可以看出,目前关于控制测量简易平差程序设计的理论基础已经基本成熟完善,在实际的测量工程中,自主开发符合本测量工程实际情况的平差程序也不再是难事。但是尽管如此,控制测量简易平差程序的设计方法和实现手段还仍然有很大的进步空间,需要我们在未来的平差程序设计研究中不断完善。相信在计算机硬件和系统和软件系统性能、程序设计模块化水平不断提高的今天,控制测量平差程序设计技术将会得到更大的发展。
致谢
在本文的撰写过程中,XXX 老师作为我的指导老师,她治学严谨,学识渊博,视野广阔,为我营造了一种良好的学术氛围。置身其间,耳濡目染,潜移默化,使我不仅接受了全新的思想观念,树立了明确的学术目标,领会了基本的思考方式,掌握了通用的研究方法,而且还明白了许多待人接物与为人处世的道理。其严以律己、宽以待人的崇高风范,朴实无华、平易近人的人格魅力,与无微不至、感人至深的人文关怀,令人如沐春风,倍感温馨。正是由于她在百忙之中多次审阅全文,对细节进行修改,并为本文的撰写提供了许多中肯而且宝贵的意见,本文才得以成型。
在此特向XXX 老师致以衷心的谢意!向她无可挑剔的敬业精神、严谨认真的治学态度、深厚的专业修养和平易近人的待人方式表示深深的敬意!同时感谢XXX 老师、XXX 老师、XXX 老师等几年来对我的栽培和教育。
参考文献
[1]. 白征东,Matlab 在测量平差教学中的应用[J],测绘通报,2009(11)
[2]. 高彩云、高宁、孙敬克,MATLAB 在测量平差课程教学中的尝试[J],科技信息,2009(24)
[3]. 赵亚红、郝延锦、徐明侠,Matlab 在测绘工程领域中的几点应用[J],地矿测绘,2011(01)
[4]. 钱建国、赵炜,MATLAB 应用于测量平差课程的探讨[J],矿山测量,2008(01)
[5]. 卓力格图、詹洁晖,MATLAB 软件在测量平差中的应用[J],地壳形变与地震,2009(03)
[6]. 孙庆华、熊伟、张宪柱、王磊,基于Excel 和MATLAB 的导线网平差[J],北京测绘,2009(04)
远程与继续教育学院
本科毕业论文(设计)
题目:《控制测量简易平差程序设计》
学习中心: 浙江分院
学 号:
姓 名:
专 业:
指导教师:
2014 年 3 月 5 日
中国地质大学(武汉)远程与继续教育学院
本科毕业论文(设计)指导教师指导意见表
学生姓名: 学号: 专业: 毕业设计(论文)题目:
中国地质大学(武汉)远程与继续教育学院
本科毕业设计(论文)评阅教师评阅意见表
学生姓名: 学号: 专业: 毕业设计(论文)题目:
论文原创性声明
本人郑重声明:本人所呈交的本科毕业论文《控制测量简易平差程序设计》,是本人在导师的指导下独立进行研究工作所取得的成果。论文中引用他人的文献、资料均已明确注出,论文中的结论和结果为本人独立完成,不包含他人成果及使用过的材料。对论文的完成提供过帮助的有关人员已在文中说明并致以谢意。
本人所呈交的本科毕业论文没有违反学术道德和学术规范,没有侵权行为,并愿意承担由此而产生的法律责任和法律后果。
论文作者(签字):
日期:2014年3月5日
摘 要
控制测量简易平差程序设计是现代测量测绘工作中必不可少的重要内容,其主要是为了用于对控制网测量数据进行平差处理,以最大程度的减小测量误差,提高测量工作的准确率和科学性。现本文就主要探讨了控制测量简易平差的程序设计问题。文章首先分析了平差程序的计算特点,指出在设计控制测量简易平差程序时的基本要求和基本步骤,并从结构化程序设计与控制网的数据结构两方面论述了设计原理。继而以基于MatrixVB 的测量平差程序设计为例,详细介绍了控制测量简易平差程序的设计过程。并对本案例的设计开发与实现结果进行了分析,指出该程序设计是非常可行的。
关键词: 1、测量;2、条件平差;3、间接平差;4、MatrixVB ;5、程序设计
目 录
一、测量平差程序的计算特点 .................................. 1
二、测量简易平差程序的设计基本要求和基本步骤 ................ 3
(一)基本要求 ......................................... 3
(二)基本步骤 ......................................... 3
三、控制测量简易平差程序的设计原理分析 ...................... 4
(一)结构化程序设计 ................................... 4
(二)控制网的数据结构 ................................. 5
(三)图的数字化方法对比分析 ........................... 7
(四)控制网的数据结构组成 ............................. 7
四、基于的测量平差程序设计实例分析 .......................... 9
(一)测量平差的基础与模型 ............................. 9
(二)测量平差程序开发方案的确定 ....................... 9
(三)基于MatrixVB+VB6.0的平差程序设计 ............... 10
(四)程序的开发及实现 ................................ 11
(五)平差求解的实例分析 .............................. 12
(六)本节小结 ........................................ 14
五、结束语 . ................................................ 15
致谢 . ...................................................... 16
参考文献 . .................................................. 17
在以往的测量工程中,无论多么复杂的控制网测量平差都是要经过人工计算而得出,不但计算作业量非常繁重,而且不能完全保证计算结果的准确性。而在今天,计算机技术和软件开发技术日趋成熟,通过计算机强大的运算能力,在一定的软件基础上,可以实现测量数据平差的自动化处理。在平差软件的应用中,无论控制网网形多么复杂,或是观测量增多多少,都能够在最短的时间内,得出最准确的计量结果。这种平差处理方式极大的提高了测量作业的工作效率,降低了测量误差,促进了测量测绘行业的发展。虽然当前市场上已经有很多较为成熟的平差软件,但是在一些工程项目中,还仍然需要技术人员研发符合实际需求的平差程序。以下本文就对控制测量简易平差程序的设计问题进行探讨研究。
一、测量平差程序的计算特点
测量平差程序是建立在计算机平台上的一种软件程序,其在计算的过程中无需花费人的过多精力,人只需要按照程序流程操作计算机,就能够快速精准的得出测量平差的计算结果。这种计算方式相较于传统的手工计算而言,不但计算速率快、准确率高,还能减轻人的工作量,实现数据处理的自动化。
虽然手工计算平差和计算机计算平差的最终目的是一致的,都是为了求得最准确的计算结果,减小测量误差。但是在计算的过程中,手工计算和程序计算的方式方法和注意问题的角度都是有很大差别的。这是因为在手工计算只能够,所有的数据和计算过程都是由人来操控,因此在计算时只需要注意计算过程中的基本问题即可。但是在计算机程序软件计算平差的过程中,计算机程序软件本身并不能具体识别各种数据,所有的数据对于计算机程序软件而言都是抽象的,因此在设计程序软件时,不但要考虑数据本身的计算问题,还要考虑计算机的性能以及其处理问题的规律。
正是因为如此,我们在进行测量简易平差程序设计时,要明确程序计算时所采用的平差处理依据与手工计算时所采用的平差处理依据是存在较大差异的。在手工计算平差的过程中,通常所注重的问题的尽量降低计算量,因此当必要观测数超过多余观测数时,一般选择条件平差;而反之则选择间接平差。但是程序软件计算平差时,计算机高效的计算能力使得再繁重的计算量都能快速完成,因此无需注重降低计算量的问题,而应当
将注意力放在如何实现程序计算的问题上,也就是如何找出程序计算方法的规律性 ,使其更利于程序设计的技术实现这一问题上。
二、测量简易平差程序的设计基本要求和基本步骤
(一)基本要求
和一般的程序设计一样,测量简易平差程序的设计也应当按照一定的基本要求进行设计。首先,所设计的程序应当具备逻辑清晰、结构简单、易读取、易扩展等要求;其次,所设计的平车程序在运算的过程中应当具备速度快的特点,也不能占用过多的内存,内存与外存应当尽量避免频繁交换。第三,平差程序设计中所采用正确合理的数学模型,且要具备一定的科学先进行,要求该数学模型计算所得结果的准确度高;第四,所设计的平差程序应当具有较强的适应能力,要能够移植,能够在各种形式下都能满足计算需要。最后,平差程序设计要从用户的角度出发,尽量方便用户的使用,因此程序的操作应当尽量简便。这些设计基本要求不但要求在总体设计时遵守,还要求在整个设计过程中的每个环节都遵守。
(二)基本步骤
测量简易平差程序的基本设计步骤主要可以概括为以下几点:结构总体设计、数据结构设计、确定软件各组成部分的算法及数据组织、选定某种表达式来描述各种算法、程序编写、程序调试、编写用户使用说明。这些步骤是在任何一种平差程序的开发和设计过程中都应当涉及到的环节,为平车程序设计的基本步骤。
三、控制测量简易平差程序的设计原理分析
(一)结构化程序设计
近半个世纪以来,计算机技术和软件开发技术都在不断的完善和成熟,各种各样的软件开发需求也在不断增多。为了提高软件开发效率,实现大规模、工业化软件开发生产,IT 人员提出了结构化程序设计的软件开发方案。目前,结构化程序设计思想已经基本形成,而C 语言是最能反映这一思想的标志,现如今的计算机软件程序开发大都是采用C 语言作为最主要的开发语言。另外,提出模块这一概念也是结构化程序设计思想成熟的重要表现。以下我们就来对其基本原理和相关理论进行简单介绍。
1、模块化程序设计
在软件程序开发的过程中,模块就是指固定某一用途的数据结构或程序代码。也就是说,一种模块在程序开发过程中只执行一种任务。并且在C 语言中,所有的模块都会与某个函数相互对应。而模块化,则是指在开发某一软件时,将软件需要开发的内容分解,使其成为多个小模块。并且这些小模块可以独立自主的开发、测试,当所有的小模块都已经开发调试完毕之后,将其组装在一起,就能够得到预期要开发的软件。将软件程序的开发实行模块化不但能够降低软件的开发难度,而且可以使软件程序的结构框架更加清晰明了,程序的设计内容也更容易被理解和应用。
需要注意的是,在软件程序的模块化过程中,并非随意分解软件成为多个小模块,而是要按照一定的分解原则来划分模块。首先要按照功能来划分小模块,小模块的功能要单一且具体;其次要保证小模块的自主独立性、较强的内聚性与较弱的耦合性。这样才能使各个小模块的开发的过程中实现自主独立开发与测试,并且也更利于模块移植。为了能够减小模块的耦合性,可以尽可能多的采用局部变量和层次结构分析。
例如在平差程序模块化的分解过程中,可以先将平差程序分解为数据输入、数据处理、数据输出等三大部分,再分别对各个部分细分,再细分,直到不能细分为止。具体来讲,平差程序模块化可由图3-1来表示:
图3-1 平差程序模块化
(二)控制网的数据结构
之所以要进行平差程序设计,正是为了要处理测量控制网的各种数据。因此在设计测量简易平差程序时,要首先理解控制网的数据结构的相关理论。
1、概念分析
一个具体的控制网通常是以图形方式直接绘出的,为了用计算机进行控制网的平差计算,就需要将具体的网形转化为一系列的数据,然后才能输入计算机进行处理。这种将网形转化为一系列数据的工作和过程称为“网形数字化”。网形数字化所得到的一组数据就是控制网的数据结构。
数据结构所涉及的范围是广泛的。在每个具体问题中,数据元素及其关系是确定的,而且都有其特定的含义。对测量平差而言,其数据结构就是表达一个控制网的全部数据的集合,包括已知数据、观测数据、网形数据(网图数据)及其关系。
2、图的数字化
在控制网的数据结构中,不可避免的要对各种图形进行数字化转换,这就需要用到图论的概念。这是一种研究事物之间关系的数学方法,其数字化的表现方法主要有三种,即相关矩阵,邻接表和边目录。我们以图3-2图3-3为例,来分别介绍三种数字化表达方法。
图3-2 具有四个点的无向图 图3-3具有四个点的有向图
(1)相关矩阵:如果i ,j 两点有边相连,则矩阵第i 行、第j 列元素为1,反之为0;对角线上元素永远为零。
对于如图3-2所示的无向图,用相关矩阵表示如下:
⎛0 1
1 0⎝110⎫⎪011⎪ ⎪101⎪110⎪⎭
无向图特点:关于主对角线对称,通常只需写出一半即可。
对于如图3-3所示的有向图,用相关矩阵表示如下:
⎛0 1
0 0⎝110⎫⎪010⎪ ⎪101⎪100⎪⎭
有向图特点:通常不是对称矩阵,需要写出矩阵全部元素。
(2)邻接表:按照图中的顶点顺序,将与该点边相连的所有点(可达顶点)排成一行,所有这些行所构成的表叫邻接表。
对于如图3-3所示的有向图,用邻接表表示如下(表3-1):
该表可由对应的相关矩阵产生。为节省内存,通常将邻接表排成一行。为识别可达顶点所属的行号,需要给出表3-1中每行含有的可达顶点数,从而构成可达顶点数表和可达顶点表。如表3-2所示:
表3-1邻接表
表3-2邻接表
在表3-2中,第一行为可达顶点数表;第二行为可达顶点表。
与有向图类似,无向图的邻接表也可以由相应相关矩阵产生。
(3)边目录:按照图的定义,图由顶点集V 和边集E 组成。然而,边集实际上包含了所有点集的信息(除非图中包含孤立的点,这种情况在控制网中是不会出现的),所以可以只用边集E 来表示图。这种用两端点号表示图中边所构成的表成为边目录。下面对于有向图的例子做简单的说明。
对于如图3-3所示的有向图,用边目录表示如下(表3-3):
表3-3有向图的边目录
在表3-3中,每一列表示一条边,第一行中的点为起点号,第二行中的点为终点号。 对于无向图,表示方法与有向图类似。需要注意的是,为了使每条边只表示一次,采用最小点号原则。也就是起点号由小到大排列,边不重复表示。
以上三种方法,在数学上是统一的。也就是说,只要知道一种表示,其它两种就可以相应生成。
(三)图的数字化方法对比分析
在将控制网的图形数据转化为数字数据时,采用上述三种表达方式都可以实现数字化效果,即都能够表现出图形的所有点和所有边。但是相对来讲,采用相关矩阵的数字化转换方法会出现较大的冗余度,也就是说,对角线上的所有元素都将表现为0,而其他位置则出现大量的数据冗余,并且其无法表达出图形各个边的邻接关系,非常不利于控制网平差的计算。因此一般多采用邻接表或边目录的数字化方法。相对来讲,前者在有向图中的数字化转换中会占用更少的空间。在无向图的转换中,两者的性能则相差无几,均可采用。
(四) 控制网的数据结构组成
在控制网的数据结构形成过程中,首先要将实际测量工程中的各项内容与图的各个元素相互照应。如图的顶点就应当照应测量工程中的实际测量控制点;测量控制网的方向观测值等有向边应当照应有向图的边;测量控制网的单向测距边应当照应无向图的边,等等。具体来讲,控制网的数据应当包含已知数据、观测数据和网形数据,在程序设计的过程中,我们可以采用上述数字化方法来将各个数据之间的关系表达出来,构成控制网的数据结构。
另外,在形成控制网的数据结构时,要注意数据结构的充分性与必要性。所谓充分
性就是指在控制网的数据结构要充分满足控制网的构成需要,也就是说要有足够多的数据来充分表达控制网图形的点与边的关系。而必要性则是指数据结构中所包含的数据都是必要的,而不是冗余多余的。相对来讲,在程序设计中,人们往往只重视较易发现的充分性条件,而忽视难以发觉的必要性条件。这是因为若数据结构中含有冗余数据,则会自动将算法实现的难度转嫁给用户,使其在使用中多输入一些无关紧要的冗余信息条件,增大了用户操作的复杂性和难度。因此可以说,在平差程序的设计中,必要性条件的满足程度决定了该程序的完善程度。必须要引起我们的重视。
四、基于的测量平差程序设计实例分析
为了能够更好的介绍控制测量简易平差程序设计和实现的方法,本文决定以某隧道施工测量中所开发的平差程序为例进行详细探讨。在某隧道工程中,设计施工人员为了能够更精准的掌握隧洞内的平面控制导线网、高程控制水准网和测角三角网,要对这些控制网的数据进行平差处理。基于实际工程的需要,要重新开发一套平差程序。本工程中决定采用矩阵计算能力,在MatrixVB 平台上,用VB6.0可视化编程和Excel 表格数据输入的方法来开发测量简易平差程序。具体的开发和设计过程如下所示:
(一)测量平差的基础与模型
在测量工程中,之所以会进行数据的平差处理,是因为在测量中存在在着多余观测,也就是说,测量平差是建立在多余观测基础上的,并在此基础上按照一定的数学模型以及原则来调整观测结果,以此来提高观测值的精度。在测量平差的处理中,最主要的工作任务就是要将有误差的观测值之间的不符值消除掉,得出未知量的最或然值,并评定该值的精度。
为了更好的完成平差程序的设计,我们首先要了解一些平差的概念和数学模型。在平差中需要用到的几个量主要有观测值个数n 、必要观测数t 、多余观测数r 。其中,r=n-t。平差的数学模型主要是指用数学关系来表现几何模型的几何关系及其相互之间的内在关系。
(二)测量平差程序开发方案的确定
Visual Basic 6. 0是一种可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言,可用于开发Windows 环境下的各类应用程序,在Visual Basic(以下简称VB) 环境下,可以利用事件驱动的编程机制、新颖易用的可视化设计工具进行程序开发,可以使用Windows 内部的广泛应用程序接口(API)函数,动态链接库(DLL)、对象的链接与嵌入(OLE)、开放式数据连接(ODBC)等技术,高效、快速地开发Windows 环境下功能强大、图形界面丰富的应用软件。VB 的优点在于简单易学、编程效率高,其缺点在于面向对象性不够完善、执行效率较低,运行大型的、复杂的程序时,显得不足。
MatrixVB 是由第三方提供的COM 组件,包含了大量与MATLAB 相似的函数与调用语法,可以加强VB 数学运算与图形展示功能,在VB 程序代码中可以像使用VB 自己的函数一样使用MatrixVB 的函数,而且可以不依赖于MATLAB 的环境在Visual Basic中完
成矩阵运算与图形绘制显示等功能,此外Ma-trixVB 还有小巧灵活的优点(只有11. 2MB 大小) ,所以使用起来简单,编程效率高。MatrixVB 函数库的功能大致可分为8大类(矩阵运算、运算符重载、图形图像处理、最优化运算、多项式、信号处理、随机与统计分析、控制系统) 。
涉及到矩阵运算的数值计算、图像处理等,MATLAB 可以很好解决,但仅仅使用MAT-LAB ,程序界面不够简洁美观,要求使用者有较高的专业水平,而且MATLAB 过于庞大,我们往往只需使用其中很小一部分功能就能解决问题。若仅仅使用VB 来实现,则很多在MATLAB 看来很简单的任务(例如矩阵的定义、矩阵运算、直方图显示) 都需要从底层写程序,工作量十分繁重。因此,可以采用MatrixVB+ VB 集成技术,取MATLAB 和VB 二者之长,开发出简洁灵巧、美观实用,功能强大的程序。这正是此次测量平差程序开发的思路,在VB 应用中引人MatrixVB 的方法。
(三)基于MatrixVB+VB6.0的平差程序设计
1、安装MatrixVB
系统要求:内存512M 以上,硬盘空间1G 以上; 操作系统要求Windows XP及更高版本; 在安装盘上找到Matrixvb4510, exe,双击后启动安装程序,并按照安装向导安装; 然后在“开始~运行”菜单中用命令regs- vr32 mMatrix. dll注册。
2、启动VB 开发环境并建立“标准EXE" 项目。
3、为项目引入MatrixVB:在project 下拉菜单中单击References ,在弹出的对话框中选中MMatrix 项目,系统将加载MatrixVB 的动态链接库MMatrix. DLL。
可以将MatrixVB 的函数与命令调用嵌入到VB 程序代码中实现相应的功能,其函数与命令的使用方式类似于在MATLAB 环境中的使用方式,但要注意矩阵的赋值、各种矩阵运算操作的区别,其数学运算符既不同于VB ,也不同于MATLAB 。另外,矩阵是由数行和数列数据组成的,而表格也是由行、列组成,所以为了矩阵数据的形象直观输入,调用Excel 表格进行输人,代码如下:
Dim xExcel As Excel. Application ’定义EX-CEL 对象变量
Dim xBook As Excel. Workbook ; Dim xShe-et As Excel. Worksheet
Set xExcel=CreateObject(”Excel. Applica-tion")' VB中,启动EXCEL
Set xBook=xExcel. Workbooks. Add ’
新建一个EXCEL 工作簿
Set xSheet=xBook. Worksheets(1) ’
选定工作表1
xExcel. Visible=True
MatrixVB 中矩阵的运算操作:
DimA ,B ,C As Matrix’定义矩阵变量
Set C=plus(A, B)’矩阵相加;Set C=minus(A, B)’矩阵相减
Set C=times(B, 2)’数乘矩阵;Set C=times(A, B)’矩阵点乘
Set C=mtimes(A, B)’矩阵相乘;SetC=rdivide(A, B)’矩阵点除
Set C=mrdivide(A, B)’矩阵相除;SetC=inv(B)’求逆矩阵
Set C= ctranspose(B)’矩阵转置;Set C=uminus
Set C=power(B, 3)’矩阵数字求幂。
(四)程序的开发及实现
1、程序运行主界面有“条件平差”、“间接平差”、“设置保存”三个选项卡,选取前两项时,会弹出对应的平差步骤窗口,按步骤提示,可以对照进行手工平差计算,方便了解平差解算的过程和获得过程参数的大小。
2、变量定义及赋值
公共变量定义:
Dime As Matrix’权阵
Dim V As Matrix’改正数向量
条件平差变量定义:
Dim A As Matrix’条件方程系数阵
Dim W As Matrix’闭合差向量
Dim Naa As Matrix’法方程系数
DimK As Matrix’联系数向量
间接平差变量定义:
Dim B As Matrix’误差方程系数阵
Dim 1 As Matrix’常数项向量
Dim Nbb As Matrix’法方程系数
Dim x As Matrix’参数改正数向量
根据矩阵行、列大小,将输人到EXCEL 表格中的各单元格数值赋值给矩阵变量
For i一1 To Val(Textl. Text)’矩阵的行数For j=1 To Val(Text2. Text)’矩阵的列数
B, r2 (i, j)=Val(xSheet. Cells(i,j))’矩阵元素赋值
Next j
Next i
3、基于VB + MatrixVB和平差函数模型的平差计算过程和结果如下:
条件平差中:
求解法方程系数Naa=A×P-1×AT ,即:Set Naa = mtimes(mtimes(A, inv(P)),ctrans-pose(A))
联系数向量K=-Naa×W ,即:Set K=uminus(mtimes(inv(Naa},W))
改正数向量V=P-I×AT ×K ,即:Set V=mtimesCmtimes ( inv(P},ctranspose(A)),K)
间接平差中:
求解法方程系数Nbb=BT×P ×B ,即:SetNbb=mtimes(mtimes(ctranspose(B),P) ,
B)
参数改正数向量x=Nbb-1×BT ×P ×l ,即:Set x=mtimes(mtimes(mtimes(inv(Nbb),ctranspose(B) ) , P) , l) 观测量改正数向量V=B×x 一l ,即:Set V = minus(mtimes(B, x) ,l)
(五)平差求解的实例分析
为便于演示和手工平差验证,现取一个简单案例进行说明:如图4-1所示水准网中,已知水准点A 的高程为HA=237. 483m ,为求B, C, D 三点高程,进行了水准测量,测得高差及水准路线的长度如图所示,试分别按间接平差和条件平差求解。
图4 -1水准网图
1、间接平差方法:
分别选取B,C,D 三点高程为参数x1、x2、x3,列误差方程(单位:mm):
v1=xi
v2=-x1+x2+23
v3=x2
v4=x2-x3-14
v5=x3
在“间接平差”界面点击“输人系数阵B ”按钮,自动运行Excel ,输入系数阵(先输人B 的大小5行3列) ,系数为0可以不输入,输人完成保存,点击“确定”,即弹出MatrixVB 的矩阵窗口,说明B 已存储。
依次输人1向量(误差方程中的常数向量) 和权阵P(取10km 观测高差为单位权观测) ,再依次点击各平差步骤中“求系数阵Nbb", “求参数改正数向量”、“求改正数向量V", “求单位权中误差”按钮,会得到对应的结果矩阵对话框,间接平差法求解即完成.
保存工程:单击“设置保存”选项,填写相关设置(如计算日期、项目名称、观测者、记录者、计算者、测量单位、平差方法等) 即将项目信息、平差过程、结果保存为txt 文本文件。
2、条件平差方法:
方法和间接平差类似,主要是列立的条件方程和间接平差中的误差方程以及函数模型不一样。
3) 精度评定:
两者得到的平差值单位权中误差均为24.3,另外,还可以计算出间接平差中所选参数平差值和条件平差中观测量平差值方差一协方差阵进而得到中误差评定精度,然后再利用MatrixVB 的图形绘制功能画出精度分布直方图(调用MatrixVB 中的bar 函数绘制直方图) ,如图4-2:左边是选定的B,C,D 三点高程对应三个参数平差值的中误差直方图,右边是五段观测高差平差值的中误差直方图(单位:mm) 。
图4-2精度分布直方图
两种平差方法得到的结果即改正数向量和单位权中误差完全一样,并且与手工平差验算结果一致,这也证明:因为条件平差和间接平差都是基于最小二乘原理,平差准则VTPV=min相同,所以平差结果相同。
(六)本节小结
在本隧道工程的测量平差程序设计中,采用了MatrixVB+VB的设计方法,不但把MatrixVB 本身具备的强大矩阵计算能力充分利用起来,还通过结合VB6.0的可视化编程来弥补了其不够灵活的缺陷,使两者呈互补状态,再加上Excel 表格的辅助,使得矩阵数据的输入更加简单方便,使用户在使用该平差程序时能够全面了解控制网的数据信息,并能够在最短的时间内完成数据输入和平差计算,得出最终输出结果。但是需要指出的是这种平差程序设计虽然简单易用,但其受程序编程的限制,不能根据观测值直接自动生成方程,而需要用户自足输入,这一点增大了用户的作业量,适合在中小型数据量的测量工程中使用。
五、结束语
本文通过介绍平差程序设计的相关概念和理论基础,研究了某实例工程中的测量平差程序的开发、设计和实现。由本文论述可以看出,目前关于控制测量简易平差程序设计的理论基础已经基本成熟完善,在实际的测量工程中,自主开发符合本测量工程实际情况的平差程序也不再是难事。但是尽管如此,控制测量简易平差程序的设计方法和实现手段还仍然有很大的进步空间,需要我们在未来的平差程序设计研究中不断完善。相信在计算机硬件和系统和软件系统性能、程序设计模块化水平不断提高的今天,控制测量平差程序设计技术将会得到更大的发展。
致谢
在本文的撰写过程中,XXX 老师作为我的指导老师,她治学严谨,学识渊博,视野广阔,为我营造了一种良好的学术氛围。置身其间,耳濡目染,潜移默化,使我不仅接受了全新的思想观念,树立了明确的学术目标,领会了基本的思考方式,掌握了通用的研究方法,而且还明白了许多待人接物与为人处世的道理。其严以律己、宽以待人的崇高风范,朴实无华、平易近人的人格魅力,与无微不至、感人至深的人文关怀,令人如沐春风,倍感温馨。正是由于她在百忙之中多次审阅全文,对细节进行修改,并为本文的撰写提供了许多中肯而且宝贵的意见,本文才得以成型。
在此特向XXX 老师致以衷心的谢意!向她无可挑剔的敬业精神、严谨认真的治学态度、深厚的专业修养和平易近人的待人方式表示深深的敬意!同时感谢XXX 老师、XXX 老师、XXX 老师等几年来对我的栽培和教育。
参考文献
[1]. 白征东,Matlab 在测量平差教学中的应用[J],测绘通报,2009(11)
[2]. 高彩云、高宁、孙敬克,MATLAB 在测量平差课程教学中的尝试[J],科技信息,2009(24)
[3]. 赵亚红、郝延锦、徐明侠,Matlab 在测绘工程领域中的几点应用[J],地矿测绘,2011(01)
[4]. 钱建国、赵炜,MATLAB 应用于测量平差课程的探讨[J],矿山测量,2008(01)
[5]. 卓力格图、詹洁晖,MATLAB 软件在测量平差中的应用[J],地壳形变与地震,2009(03)
[6]. 孙庆华、熊伟、张宪柱、王磊,基于Excel 和MATLAB 的导线网平差[J],北京测绘,2009(04)