1、边角三角网平差程序的设计书边角三角网平差程序设计书一、课程设计的目的学生在学习完误差理论与测量平差基础、 测量平差程序设计基础等课程的基础上,设计一个完整的测量数据处理程序, 培养学生综合应用量数据处理与计算机应用能力,培养学生主动学习,创新设计能力。二、课程设计的任务和内容1.课程设计任务:在两周的时间内应用者 Matlab 程序设计语言编制一个完整的边角网严密平差程序 , 要求有简易的界面,数据输入采用文本输入,采用间接平差模型完成平差的基本计算, 能够画出控制网图, 输出基本的计算结果, 并根据设计过程完成设计报告。程序设计主要内容包括:系统功能设计界面设计流程设计代码书写程序调试三、课
2、程设计阶段准备阶段研究设计任务书,分析设计题目,熟悉原始数据,明确设计内容和要求;制定课程设计计划和进度。熟悉算法模型阅读误差理论与测量平差基础教材,掌握平面控制网数据处理的数学模型,这里主要是指方向观测量、 角度观测量、边长观测量的观测方程和误差方程的构成,研究平面观测数据的组织方法,设计 Matlab 算法,实现计算的自动表达。功能设计阶段 设计程序要实现的功能平差程序的基本功能包括数据的输入,平差计算,精度评定、成果输出等;4.流程和界面设计阶段根据平差计算的过程和程序功能,画出流程图,设计简易界面实现数据的输入和平差计算和成果输出。在此基础上,根据功能要求,设计简便的界面。5代码书写和
3、调试阶段按照计算流程图和界面设计,根据方向观测值,边长观测值的误差方程的组成,设计 Matlab 算法,实现误差方程的自动构成,分阶段书写代码,调试实现各个阶段的功能。6.设计报告撰写阶段设计报告是对整个设计过程进行综合总结提高,内容包括课设的目的意义、程序设计的内容、 算法设计、设计心得等根据设计过程和对测量数据处理以及程序设计的理解进行独立撰写。四、组织方式进度安排以小组为单位,每小组 5-6 人,分工合作共同完成程序设计任务, 时间两周,进度安排如下:第一周周一熟悉设计书内容,制定计划 熟悉平差模型周二功能设计 流程设计 绘制流程图 观测值数据组织周三熟悉观测方程 误差方程的构成,列出计
4、算公式,设计Matlab 算法周四界面设计 按照分工进行分模块代码设计 完成数据读入模块周五分模块进行调试完成 误差方程构成模块第二周周一 代码书写 调试 完成平差计算模块周二 代码书写 调试 完成输出模块周三 代码书写 调试 完成整体调试周四 撰写设计报告周五 综合考核五、考核与成绩评定考核内容根据考勤、课程设计报告、程序结构、程序代码进行综合评定。成绩评定方法平时成绩 20%,设计报告 30%;程序代码 50%(程序 20%,运行正确 30%),总评成绩分为优、良、中、差四个等级。设计报告内容完整,图表清晰,代码书写规范,计算结果正确评为优秀。六、参考文献:武汉大学测绘学院 误差理论与测量
5、平差基础 2009北京建筑工程学院 测量平差计算 自编资料 2011同济大学 Matlab 控制网测量平差 2006七、实习报告:目的与任务:目的:基于学过的测量平差理论的基础知识,在 matlab 中编写一个相对完整的数据平差处理程序,旨在让同学们能够将学到的平差理论知识和计算机的 MATLAB软件程序编写有机地结合在起来, 让同学在实践过程中更加深刻地理解理论知识并尝试去应用, 由此提高每个人学生的思考和动手能力。任务:主要任务就是在实习的两周时间内, 分组完成一套完整的关于边角三角网的平差数据处理的的程序代码编写与试调任务,其中主要包括:数据组织与输入、平差计算、 精度评定,成果可视化、
6、 平差成果输出等。然后小组上交一份实习总结和小组成员各上交一份个人总结(设计书及总结) 。算法与模型:算法:间接平差方法;模型:平面控制网中的边角三角网本次的平差数据处理是采用间接平差的方法(数学模型)而进行的,就三个待定点 xy 坐标改正数及涉及到的五个观测站的方位角改正数为未知数( 11 个),进行误差方程的编写和平差计算,精度评定等。而实际应用是采用所提供的平面控制网中的边角三角网的平差数据模型,分别是就着边长观测量和方向角观测量的观测数据进行平差程序的编写。程序功能设计:通过手动地选择数据文件, 而后自动地对数据文件中涉及的变量进行赋值和所获得的数据的输出,而后通过实际情况分析得出需要
7、进行平差计算和精度评定等的必要步骤, 如本次数据平差的必要步骤就是待定点近似坐标的计算, 紧接着就是误差方程的编写, 包括系数矩阵和观测权阵的求得, 而后就是利用最小二乘法的平差计算和精度评定, 并且计算误差椭圆的参数和该椭圆的自动绘制,最后平差成果的输出。分模块讲解:数据组织输入和变量赋值已知点坐标信息:包括已知点数 n0,待定点数 nd,点号名 pn 和已知点坐标 xy0观测值精度信息:方向观测值精度 md,边长观测值精度 ma ,mb 边长观测值信息:包括起点 bf1, 终点 bf2 , 边长观测值 L2方向观测值:包括测站点 df1 , 照准点 df2, 方向观测值 L1 具体代码截图
8、:待定点近似坐标的计算通过所提供的已知点坐标计算得出的已知方位角, 在就方向观测值, 求出其每一次观测的夹角,而后找出每个测站所拥有的已知点 (一个观测方向的两个点) 确定其所在观测的行数与其他待定点所在观测方向 (必须有一个点是已知点) 的关系, 求出其他待定点所在观测方向的方位角(注意方位角是否合理问题) ,而后在边长观测值中找到对应的边长,利用极坐标法最终求得待定点的近似坐标。 x0y0. 同时还可以将近似坐标以文本的文件输出, 计算代码截图如下:误差方程式组成本次平面控制网平差模型中观测量为方向观测量和边长观测量, 未知数分为待定点坐标和定点角两类未知数,边角网误差方程的形式如下:方向
9、观测量:误差方程:(系数为: b1,c1 )式中常数项:变长观测量:误差方程:(系数为: b2,c2 )其中误差方程的编写要注意两个问题:系数的位置确定和是否待定点的判断。对于方向观测值,未知数不仅包括各待定点坐标(6 个),同样包括各测站的定向角,在未知数排序中,定向角未知数在前,待定点坐标在后,则未知数个数为nz+2*nd=11 ,对于方向观测值,每一列与定向角对应的系数均为 -1 ,与坐标对应的系数多),其他系数均为 0,及对应的系数矩阵的数值的确定(注意正负号)即每一列有。5 个系数(最而对于边长观测值,每一列包括边的两个点的对应的改正数(如果两个点都是待定点的话)四个参数,其他均为
10、0,同样还要注意系数的位置问题。由于这里分别对方向观测量和边长观测量设置两个数组,分别存储系数阵常数项变量,这里设置 b1 b2 c1 c2 四个数组。 根据观测值序列和未知数序列确定系数矩阵中各元素的位置和大小;这里将误差方程构成设计成一个 function 函数文件,输入量为已知点信息,近似坐标,边长观测量,方向观测量,等输出量为误差方程系数,常数项。代码编写截图:5.平差计算和精度评定本次平差的特殊就是结合两个误差方程的数据进行同时平差,具体步骤在得到误差方程的系数之后, 根据方向观测值和边长观测值的初步计算观测值权阵 ( p1 p2),严格的精确计算可以采用方差分量估计方法精确计算方向
11、和边长观测值的权。 在得到误差方程之后, 可以直接利用矩阵进行方程组的解算 ( 最小二乘法 ) ,误差方程分为方向观测误差方程,边长观测误差方程,两者可分别计算,然后再相加。由于近似坐标不精确,在求取参数时,程序设置了迭代计算并确定终止条件, 在改正数满足条件后, 即可进行平差值计算和精度统计。程序截图:6.误差椭圆参数计算参考书上的误差椭圆参数计算模型由于误差椭圆描述了点位精度及其在各个方向的分布, 表示了网中点或点之间的误差分布情况,常用误差椭圆对布网方案做精度分析,误差椭圆三个参数为椭圆的长半轴 E,短半轴 F和主轴方向本次参数计算是通过单位权中误差, 协因素阵, 待定点的协方差阵等上一
12、步平差得出的结果或推算结果,来进行误差椭圆确定。代码截图:7. 控制网图形绘制和误差椭圆绘制边角三角网控制网图形绘制主要考虑绘制控制网点位分布图,观测量的绘制等。 基本思路是首先根据坐标绘制控制网散点图,点位标注, 边长观测量和方向并进行标注, 然后根据距离观测值,方向观测值连线,构成完整的控制网图。至于误差椭圆的绘制则是在控制网图的基础上再加上待定点对应的误差椭圆的绘制就完成了。(利用 Plot 命令)其中有一个特别注意的地方就是参数的设置,要根据实际情况而定。绘制代码截图:8.平面控制网成果输出以生成 txt 格式文档的形式进行成果输出。其内容主要包括五个方面内容:平差计算后的坐标值,待定
13、点点位中误差,误差椭圆参数计算等。信息具体内容如下:1.平差计算成果成果总输出;2.坐标平差成果输出3.点位误差椭圆参数4.误差椭圆的绘制5.方向观测平差成果:方向观测值,平差值,改正数;6.边长观测平差成果:边长观测值,边长平差值,改正数;代码截图(其中的几个) :平差主界面的设计此界面为本组实习成果的最大创新之一, 就是我们在原本要求的平差程序界面网平差程序)的基础上增加了另一个界面,就是小组信息的界面(包括有小组成员照)两个界面之间利用一个总的界面(小组平差程序设计)进行选择性打开(边角三角,而代码截图:主界面小组平差程序设计总的设计流程图:代码书写与调试 :由于上面已经展示过几乎所有的
14、代码(根据每一个模块) ,真正运行整一个程序的时候却是按照步骤一步步地一个模块地运行, 但是问题一定会出现的, 而且还不是很少, 关键就是怎么样通过一步步地发现问题所在, 并根据实际情况去试调程序, 合理地按照平差理论去运行程序。一下列举了一些出现的主要问题。方位角由于所提供的数据时边角三角网的数据, 这样就会涉及到方位角问题, 而且还不止一次的出现方位角的运算(如待定点的近似坐标的求解过程中出现过) ,这就应该惊醒一个重要的细节:就是所求的方位角是否合理?怎么样去判断呢?就是通过 if ( elseif )语句去判断其与 0 和 360 度或者 2*pi 的关系,在去改正方位角。原则上一旦出
15、现方位角的求解出都是要用这个语句去判断,这样才能保证精密。和提高正确性。单位问题单位问题出现在两处,就是观测值的单位权的求解处,二是误差方程的系数求解处。由于这两者是在后面的法方程求解时都要用上所以,在此之前要保证两者的单位相对统一,这个统一要分两处, 边长观测量方程系数和方向观测方程系数, 特别注意的是原始数据提供的观测精度(两种)的单位,和误差方程的系数的单位,而在实际中,我们组应用的是方向观测用秒为单位, 而变成观测以米为单位, 这样出来的结果最后的平差数据处理, 如精度评定,误差椭圆计算等,也要注意单位问题。比例参数根据实际求出的误差椭圆参数( E F fi )的大小和所绘制的三角网的
16、大小,这两者之间通过比例参数的调整才能更好地在显示误差椭圆。弧度转角度对于弧度转角度这个小问题, 我不得不提, 这是一个关键问题。 为什么?因为我们组把其他问题都解决了后, 组的坐标改正数,误差椭圆参数等都很不正常的显示在电脑屏幕上,一次次地打击我们的信心。最后,我在仔细地对照书本,细心查询,观察异同发现,一个最不关紧要的差异,就是弧度转角度的小问题,我们原来采用的是 MATLAB系统自带的弧度转角度的函数, 结果我们发现这个问题直接就是导致待定点的近似坐标差异特别大, 尤其在待定点 3 的 x,y 坐标上面,差了好几米(跟提供的平差结果数据相比) ,这样后面的就影响到误差方程系数的不正常,
17、和平差计算得出的改正数, 单位全中误差, 点位误差和误差椭圆参数的异常。 而这样我不得不自己再编两个弧度和角度相互转换的函数文件。 于是重新采用转换函数程序之后,我们的数据就非常正常的出来的。平差程序设计成果展示进入界面导入数据文件数据文件的查询查询结果:近似坐标的计算计算结果:控制网点为分布显示平差计算成果平差计算成果总输出点位误差椭圆参数实习总结:两周的实习历经百般波折磨难,终于结束了, 这两周的时间里, 大家经历的是前所未有的实习体验, 让我们不单单收货了专业能力,更是给我们的人生上了重大的一课,在课堂上我们都是学习的书本上的理论知识,这次我们把理论知识和计算机编程结合在一起,这才是真正
18、学习到了未来生活工作中所实用的东西,提高了我们真正面对测量平差工作还有matlab 软件时的操作能力。我们在实习中发现自己的问题并及时的解决,让自己在以后的学习工作中不犯同样错误。 在刚拿到实习任务的第一天我们就进行了分组,分完组后, 为了能够更快更有效率的完成此次实习,也为了能让组内的每个成员参与进来,首先,我们在组内对各自的任务进行了分配。 大家各自负责一部分的程序代码编写内容,各自针对自己所主要面对的内容查书并向其他各组询问讨论,然后根据书上的代码提示, 调通自己负责的这段程序代码, 每个人把自己的部分完成后,大家在一起编程查错,经过反复修改弄出整个的成果输出,还有简单的界面设计。我们的
19、组长是王子强, 他和王瑞负责的是主要的数据计算部分还有整体修正还有精度评定部分, 这几点可以说是这次程序代码中的核心所以需要他们两个人分担重任,宁子铭负责的是误差椭圆参数的计算和图形的绘制内容,缪云龙负责的则是数据文件的输入部分的程序编写,闪永川负责的是最后的成果输出部分,王梦琦则是负责最后的界面部分程序代码的设计,这些分工只是各自主要负责的项目,但是因为大家能力都有限, 所以出现问题后还是集合在一起解决问题再继续进行之后的实习。一开始, 先是将已知点信息录入,这块代码是由我们组的缪云龙主要负责的,这部分的代码看似简单,但还是给我们带来了不小的麻烦,需要在matlab中单独建立一个以chkda
20、t 命名的 function 文件。这些看似简单的问题却也给我们带来过不少的烦恼。接下来就是由我们组长王子强和王瑞同学负责的近似坐标计算和相关精度评定的代码编写, 这部分非常的复杂, 它包含了方位角计算, 编写误差方式的程序代码等或大或小的问题。遇到的首要问题就是我们看不懂书上的近似坐标计算的代码, 而书上的代码又存在问题,缺少 nk 的定义,而想要修正这一点需要读懂整段代码并将 nk 通过书写给予定义。还有就是误差方程的系数矩阵的编写程序。 这里有好几个因素要考虑: 方向观测边的方位角计算,未知数的系数位置安放问题,还有就是点号是否是待定点的判断等等诸多问题。在不断地学习中向其他组成员请教后
21、我们总算输入了正确的代码修正了这部分工作。算完上面这些计算之后, 就是由宁子铭负责的误差椭圆参数的计算和图形的绘制了, 这部分的代码编与之前的计算相比就显得简单了一点, 但由于我们只能参考教材, 而教材的程序又多少有些不适用, 程序还是出现了问题, 在大家共同的努力下, 在同学的帮助下我们还是完成了程序, 但是,由于我们数据的单位不统一,导致我们的椭圆参数一直较大,调节了很久才找到问题的所在, 纠正后总算是可以了。 而图形的绘制相对就简单些, 主要都是将计算与程序相连,再把 x, y 给予定义就可以了。出图也完成之后就是由闪永川负责的成果的输出,这部分不难,我们很顺利的完成了,当然这也源自闪永
22、川之前的准备比较充足,让全组的效率得到了提高。最后的就是,由王梦琦负责的简单界面的设计,在这部分我们也遇到了不小的问题,callback 后面的属性值应该是 txt 文件的名称,但一开始我们却做错了,后来在请教了别组同学还有老师之后才知道应该选用 m文件的名称,后来修改之后基本解决了问题。在大家共同的努力下实习终于圆满的完成了, 我们不单单获取了知识更是经历了一场历练,这次的实习对我们每个人而言都是难忘的, 我们不仅收货了知识更是让我们在反复修改中经历了身心的磨练, 从烦躁不堪到慢慢适应到最后的努力编写, 这收获不只是在知识层面的,更是在人格层面的。编程对我们来说可能并不难,简单的 c+和 vb 编程都是我们组成员以前的强项,但是换了 MATLAB后我们不理解那些代码的意义,很多东西逻辑都很通顺但是却不知道该如何编译, 但是经过查阅书籍和向老师同学进行请教之后, 我们不仅成功的完成了任务,而且还让我们对 MATLAB程序的语言有了更深刻的印象,同时也帮我们复习了之前学过的测量平差知识以及计算构架和逻辑。 而不得不再次提起的是, 我们本次实习收获最大的还是团结互助的做事方法, 耐心修正反复推敲的习惯, 不断请教不断学习的能力。 这些收获远远比我们学到的知识来的更重要。 完成了这次实习我们所有人都感觉上了人生中重要的一课。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1