测绘程序设计.doc

上传人:人*** 文档编号:557303500 上传时间:2023-12-06 格式:DOC 页数:10 大小:47.20KB
返回 下载 相关 举报
测绘程序设计.doc_第1页
第1页 / 共10页
测绘程序设计.doc_第2页
第2页 / 共10页
测绘程序设计.doc_第3页
第3页 / 共10页
测绘程序设计.doc_第4页
第4页 / 共10页
测绘程序设计.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《测绘程序设计.doc》由会员分享,可在线阅读,更多相关《测绘程序设计.doc(10页珍藏版)》请在金锄头文库上搜索。

1、一、实习目的通过了六周的课程设计,在我们学习完测绘程序设计基础、测量学、测量平差的基础等课程上,通过课程的设计、制定详细的程序设计计划,编码等环节,进一步巩固了我们在这两年多的时间里所学习的知识,做到学以致用,并培养我们对于测绘的综合应用能力,使我们真正地学会自主学习,学会自主处理解决问题的能力。作为一个测绘工作者,测量过程中免不了要做一些平差的计算,如果遇到测量值较多的平差,则使计算简直成了一种煎熬。随着电子计算机的出现,数学计算变得简单了很多,同时也使测量平差作业模式发生了翻天覆地的变化,把平差计算者从繁重的、枯燥乏味的数字计算中彻底解放了出来。学会平差程序设计,可以帮助我们更加灵活的使用

2、计算机来帮助我们做平差处理以及其他的测量计算。二、实习内容1、角度弧度的相互转化程序;要求屏幕输入角度值或弧度值,将其转化为弧度值或角度值,实现互换。键盘输入正、负角度,及弧度(弧度没有正负之分),计算实例,检验程序正确与否。2、文件输入输出;3、矩阵的加减乘;4、条件平差、间接平差的计算;要求首先运用c+语言或c语言编写程序,首先实现矩阵的加、减、乘、转置的基本运算,以及矩阵求逆运算,然后在文本中读写相关变量数据,根据条件平差和间接平差的基本公式,求出改正数、中误差及高程平差值,并输出到文本中。具体算例中,条件平差与间接平差的文件书写不同,需分别写在不同的文件中,分别读取。5、水准网的平差计

3、算。要求设计平差类,根据水准网平差计算内容及步骤定义平差类成员变量及成员函数,所需数据全部从文件中读取,全部数据存于同一个文件中,并以文本格式保存,文件格式的设计就是规定数据文件中包含的内容、各类数据的先后以及各种数据的书写格式。数据存储方案设计,将磁盘中的数据读到内存中,按照不同的类别有序地放在变量或数组中,然后进行平差计算,最后将计算结果写到磁盘文件中。三、实习过程(一)实习1 1.老师讲解角度、弧度之间互相转化的计算方法以及注意事项,特别提及角度或弧度为负数的情况。 平差程序经常要处理角度值,按照测量上的习惯,角度值一般以度分秒的格式书写,从文件读取的角度值和写至文件中的角度值都是度分秒

4、格式,但度分秒格式的角度值进行角度的格式换算。 (1)思路:第一步:角度值的格式为度分秒,度值和秒值均保留两位整数,不足两位时补0,例如角度值。弧度值的格式为数字形式,例如弧度值;第二步:角度转化为弧度时,首先分别输入度、分、秒值,然后根据数学转化公式,角度值=度值+分值/60+秒值/3600,弧度=(角度值)180;弧度转化为角度时,先根据数学公式,角度值=(弧度180)/,然后将度值的小数位乘60转化为分值,再将分值的小数位乘60转化为秒值。(二)实习2 1.老师讲解了文件输入、输出时调用fstream类的方法,并且提到了类的对象访问公有函数的方法,如:fstream.Myfile; My

5、file.open(“data.txt”);其中打开txt类型的文件的方法尤其重要,在流中,定义了一些处理数据的基本操作,如读取数据,写入数据等,程序员是对流进行所有操作的,而不用关心流的另一头数据的真正流向。流不但可以处理文件,还可以处理动态内存、网络数据等多种数据形式。如果你对流的操作非常熟练,在程序中利用流的方便性,写起程序会大大提高效率的。鉴于文件输入输出的许多优点,并且使用文件的输入可以方便我们输入测量的数据,提高计算的速度。(1)思路:在fstream类中,有一个成员函数open(),就是用来打开文件的,其原型是:Fstream MyFile;MyFile.open(“data.t

6、xt”);(三)实习31.老师讲解矩阵加减乘法的计算方法,并且强调输出时要是矩阵的形式。(1)加法程序思路: 设置两个相加的矩阵A、B和结果矩阵C,均为一维矩阵,用for循环来控制将要进行计算的第i个数字,并将第i个数字相加后所得的数字放到C矩阵的第i个位置。(2)减法程序思路: 类似于加法,设置两个相减的矩阵A、B和结果矩阵C,均为一维矩阵,用for循环来控制将要进行计算的第i个数字,并将第i个数字相减后所得的数字放到C矩阵的第i个位置。(3)矩阵的乘法思路: 设置两个相减的矩阵A、B和结果矩阵C,均为一维矩阵,使用3个for循环,第一步:i来控制前一个矩阵的第i行,j来控制后一个矩阵的第j

7、列,t来控制前矩阵的第i行第t个数字,后矩阵的第j列的第t个数字,将这两个数字相乘的值放到sum中;第二步:将t依次加一,进行计算累计到sum中,最后放到C的第i行j列;第三步:当t运行到超过后,j加一,i不变,j改为j+1,将得到的sum放到C的第i行j+1列,重复一二三步;第四步:当j运行到超过后,i+1,重复一二三四步,直到i超出。(4)矩阵转置思路:(四)实习4间接平差近年来,测量编程人员运用间接平差原理对导线网,高程网等进行平差,来进行点位的精度分析,间接平差法是通过选定t个与观测值有一定关系的独立未知量 作为参数,将每一个观测值都分别表达成这t个参数的函数,建立函数模型,然后进行求

8、解,从而求得各观测值的平差值。当已知点较多时,如处理大型的导线网或工程网数据时,间接平差比较实用。与间接平差相比,条件平差不需要增选任何参数,只需要列立相应的条件方程式,在处理已知点较少如中小型的控制网,网型条件比较特殊的网型,例如单一符合导线时,需要列出的条件方程式比较少,使平差计算简单易行。这时,条件平差的优势就体现出来了。因此,运用条件平差进行平差的可视化语言设计,也具有一定的使用价值。在此,我们仅讨论间接平差。间接平差是测量平差方法的几个中要模型之一,在现阶段学习的平差原理中,间接平差的条件方程式比较容易列立,尤其是在比较复杂的控制网中,运用的比较广泛,因此,间接平差是在测量工作的内业

9、计算中经常用到的平差模型。如果只对几何模型中的必要元素进行观测,而没有多余的观测,则在观测值之间不可能产生任何函数关系,也不存在平差问题。只是在有了多余的观测的情况下,才会产生平差问题,在测量工作中及其他科学工程领域,应用最早也是最广泛的就是“最小二乘法”:=TP=min在满足最小二乘准则下求得的真误差称为估值,用表示, 测量工作中习惯用V代替,因此,最小二乘法表达式:=VTPV=min由于最小二乘法的准则,可求得真误差估值,也就是求得观测值的估值,其计算公式为L=L+V式中V称为观测值的改正数,L称为观测值L的估值,或平差值。平差原理:NBB=BTPB, W=BTPl, x=NBB-1*W,

10、 V=Bx-l, L=L+V;按照上述的计算方法,挨个算式进行计算,即可算出L;单位中误差:=(VTPV/n-t)输入的B,P,L矩阵输出的高差平差值及测量精度(五)实习5水准网是为了确定地面点的高程而布设的控制网,网中的观测值是高程控制点之间的高差。为了确定各未知点的高程,仅有观测高差是不够的,还必须有若干已知点,已知点的高程值是已知点,在平差中起到基准控制作用。由于存在观测误差,当水准网中有多余观测值之间就会存在矛盾全例如出现水准环闭合差、附合路线闭合差等,水准网平差的目的是消除矛盾,求得各高程点高程的最可靠值班,并对观测值和平差值和平差值进行精度评定。下述程序的平差设计为函数调用,函数是

11、double *Adjust(int nn,int tt,double *B,double *P,double *L )。该函数中调用了一个头文件includeArray.h,这个文件中含有进行矩阵计算的所有计算方法包括加、减、乘、矩阵的逆、乘以一个常数。 该水准网的程序设计计算步骤从文件读取已知高程和观测数据未知点近似高程计算组成法方程式法方程系数阵求逆高程平差值计算残差V及单位权中误差的计算最后成果计算和输出。水准网最小二乘法平差时,王忠至少应有一个高程已知点。所谓已知点,是指点的高程值为已知,并且在平差中保持不变的点。亦即已知点的高程是作为常数值参加平差的,只有未知点的高程才是误差方程和

12、法方程中的未知数。在平差程序中,若有些点有未知数,有些点没有未知数,未知数的个数少于总点数,点号与未知数的编号之间就会缺乏简单明确的对应关系,这给数据存储和编程带来一点的不便。相反,假如不区分已知点还是未知点,将每个点的高程都设成未知数,未知数的编号与高程点的编号就是一一对应的,这种规律性有利于编程,我们在程序中正是这样做的,但是这样做已知点就失去了控制作用,而且法方程系数矩阵还是奇异矩阵,所以必须对法方程次数矩阵进行处理才能使法方程有解且与最小二乘解相同。在近似高程的计算中,按照测量平差的习惯,一班要引入参数近似值,将误差方程的未知参数编程位置参数的改正数.水准网中的参数近似值即高程近似值,

13、原始数据文件中已经有已知点的高程值,只有未知点的高程近似值才需要程序计算,思路;第一步,设置位置点标志.个点的高程值用dispersion数组保存,近似高程计算之前,现将dispersion数组中未知点的高程值赋值为12000,由于正常的高程值不可能大于12000,根据高程数组中的值是否大于12000可判断某点是否是需要计算近似高程,当某点的近似高程计算出来之后,数组中12000就会被实际的值所取代,指导高程数组中的所有的高程值均小于12000,近似高程计算便告知结束。第二部,计算高程,近似高程计算的基本思路是,遍历观测值,找到每个观测值起始点号、终点号,在根据点号从dispersion数组中

14、获得每一段高差起始点的高程值和终点的高程值,当高差的一端是高程已知点,另一端是高程未知点时,就由已知点高程和观测高差传算出未知点的高程值,并将计算结果赋值给高程数组,如果高差两端同为已知点或者同为已知点,就跳到下一次循环,继续查找下一个观测值。在遍历观测值时,排在前面的观测值总是最先用于高程近似值的计算,当观测值的排序不同时,近似高程计算用到的观测值不同,计算结果也不同,所以近似高程的计算结果不是唯一的。有时一次遍历观测值可能还有部分点的高程值任然未能计算出来,还要再次遍历观测值,直至全部点均计算出高程值为止。精度的估计与平差结果的输出由函数dispersion完成。该函数将平差结果以类似表格

15、的格式写至结果文件。输出内容包括高程点名、高程平差值及其中误差,高差端点、高差平差值、高差改正数、高差平差值的中误差等。计算平差值的中误差需要知道高程平差值的权逆阵和单位权中误差,对于不同的平差值方法,QX和具有不同的计算公式。水准网平差此题的难点是如何将文本中观测值读到程序中,并形成B、P、L矩阵,但B是最不容易得到的矩阵。定义start和end两个字符数组,将每次观测的起点保存到starti里,终点保存到endi里,将这两点的高差保存到distancei中,将A点作为基准点,通过ASK码来确定其它的点,另定义一个a矩阵,用来存放水准网中的点是否为已知点,若为已知点则am=-1(m为点的序号,A为0、B为1)若是未知点am=0、1这样以此类推。先定义一个B矩阵,行为观测的观测数,列为已知点的个数,(例如下图,共有四个已知点,五个观测值,)并将B初始化为0;当aendi-A !=-1可知观测终点未知,这时就将这个字母所对应的那一列的其中一个0改为1,astarti-A!=-1,这时就将这个字母对应的那一列的其中的一个0改为-1;这样就可以算出B矩阵;而P矩阵是很容易写的,先定义一个P矩阵有n行n列,n=已知点+未知点的个数,计算两点之间的距离的倒数,作为权,记到P矩阵中的主对角线上。L矩阵可以通过观测值直接

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号