《2022年测绘程序设计实习报 .pdf》由会员分享,可在线阅读,更多相关《2022年测绘程序设计实习报 .pdf(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、测绘程序设计实习报告院系:姓名:班级:学号:2012 年 4 月测绘程序设计实习报告一、总述:本学期我们测绘程序设计 课程共有 6 周课程的实习, 程序设计的题目是基于上学期误差理论与测量平差课程的设计,主要有水准网平差、边角网平差、GPS网平差。由于时间的问题,本学期程序设计主要是水准网平差,有余力的同学继续向下做。二、实习时间地点及小组安排:1、实习时间:每周周二、周五下午四节课;2、实习地点;信息楼208 机房;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 8 页
2、 - - - - - - - - - 2012 年 4 月测绘程序设计实习报告第 1 |7 页3、小组安排:以小组为单位,每组5-6 个人,每个小组指定一位编程能力较好的同学作为组长, 负责小组人员到课情况、 作业完成程度、 指导成员上机以及负责日常作业的检查。三、课程上机实习:1、实习内容概述:第一次实习由老师系统的介绍了本学期上机实习的大体概况,讲解了测量平差的具体具体类型, 给大家重新熟悉了间接平差的具体步骤。之后由我们编写了一个小程序:角度与弧度的相互转化;第二次实习大家已经完成上次的实习任务,之后我们开始间接平差的实习,主要是矩阵间的操作;第三次课开始,每次上机操作之前先由老师简单介
3、绍本次课程需要完成的任务,之后给大家看 PPT讲解程序设计的具体操作。 大约花费半个小时, 剩下的时间我们自己编写代码。 期间有不懂的问题可以随时问老师、学长或者与其他同学交流讨论;几次课之后, 我们都完成了间接平差的实习,由老师负责检查。 检查完成之后,大家进行水准网平差的实习。2、具体实习程序:2.1 角度与弧度的相互转化:程序设计基本思想:应用角度与弧度的比例关系,进行相互转化。JD (角度) =HD(弧度) *180/ ;HD(弧度) =JD (角度) */180;2.2 间接平差:2.2.1:程序设计基本思想:采用指针数组, 为矩阵的行列动态分配空间,然后根据间接平差的步骤, 一步步
4、求得最后的结果。2.2.1:间接平差的步骤:根据题目要求,写出误差方程式v=Ax+l;: 根据误差方程式系数阵A 求 N, N=AT*P*A (AT表示 A 的转置, P为权阵) ;:根据误差方程式常数项l 求 C,C=AT*P*A;:由高斯约化法或行列变化求N-1;:求 x,x=-N-1*C;:将 x 带回原误差方程,求误差改正数v,v=Ax+l;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 8 页 - - - - - - - - - 2012 年 4 月测绘程序设计
5、实习报告第 2 |7 页2.2.3:主要程序分析:矩阵相加:应用for 循环控制条件, Cij=Aij+Bij ;:矩阵相乘:应用for 循环控制条件, sum=sum+Aik*Bkj ;:矩阵求逆:采用行列变换法求出矩阵的逆矩阵。先初始化一个单位阵aij ,然后将 N 化为单位阵,相应的aij 才用相同的变换,化为N-1;2.2.4:程序注意事项:为指针数组动态分配空间,注意行列的大小。如A:m 行 n 列,P:m行 m 列,l:m 行 1 列,N:m 行 m 列等等;:一般的数据都采用double 型,力求精确;: 应用 srtprecision()函数设置精度,同时注意包含头文件 #in
6、clude。2.2.5:程序设计收获:重新温习了间接平差的解题思路和方法,加深印象;:掌握了一门技能,用程序实现间接平差的解题,简单、高级;:掌握了 C+ 函数的运用, 熟悉了相应的 C+ 语言技巧,如 setpricision()函数的运用;:与同学交流了思想,加深情谊,锻炼了团队合作意识与能力。2.3 水准网平差:2.3.1:程序设计基本思想:已经编写了间接平差的程序, 其中的矩阵操作可以直接运用。 水准网平差主要是实现对误差方程式系数矩阵、常数项、权阵的输出, 要采用相应的程序技巧将水准网的路径转化为矩阵中的数字,以此实现矩阵的输出。2.3.2:水准网平差的步骤:采用程序设计技巧,控制相
7、应的循环条件,将误差方程式的系数阵A、常数项 l 以及权阵 P求出,组成误差方程式v=Ax+l;步同间接平差;:求观测值改正之后的值L_L=L+v ;:求各未知点的高程值H_H=H+ x。2.2.3:主要程序分析:系数矩阵的求法:先初始化系数矩阵Amn 为 0 矩阵;然后控制循环条件,依次输入各段水准路线的起点、终点;依次判断各水准路线的起点、终点在矩阵 A 中的位置,若是起点, 则把原先的值 0 赋值为 -1;若是终点,则把原先的值 0 赋值为 1,其余的不变, 求得 A。:常数项的求法:对应水准网点的编号,初始化标记数组aP(P 为总点数 ),已知点的赋值为 0,未知点的赋值为1;在输入水
8、准路线起始点的同时,判断,如果起点标记为0,终点标记为 1或起点标记为 1, 终点标记为 0, 则求出未知点的近似高程H, 并求得常数项 l,如果起始点分别标记为0 和 2 或起始点分别标记为2 和 0,并把未知点点号标记名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 8 页 - - - - - - - - - 2012 年 4 月测绘程序设计实习报告第 3 |7 页为 2; 这样就把水准路线中带有已知点路线的未知高程点求得了近似高程H 和常数项 l;控制循环条件,判断标
9、记数组,如果有1 值,判断,如果起始点分别标记为 1 和 2 或者是起始点分别标记为2 和 1,则求得未知点的高程和该路线的常数项 l,并把未知点标记为2,如果起始点都为 2,则求得该路线的常数项l;至此,求出了常数项 l。:权阵的求法:依次输入各段水准路线的高程,以10km 观测高差为单位权观测,求出权阵Pij=10/Cij ;矩阵加法、相乘、求逆同间接平差。2.2.4:程序注意事项:设置精度函数 setpricision():应用 setpricision()函数之后, 后面的数据均按照本次设置的精度输出数据,因此,如果后面的数据要求精度不同,则需要重新应用 setpricision()函
10、数;:判断条件 if、else if 语句使用时,注意括号里面是” =” ,而不是 ” =” ;:求 x,v 时要注意单位的转化,求高程值、观测值的改正值的单位转化;:程序中应用文件读取操作时,注意包含头文件#include。: 输入已知点点号与高程不能同时进行, 因为高程数组中的值用到了点号。2.2.5:程序设计收获:掌握了一门技巧:应用C+ 语言求解水准网平差;:简单学会了文件读取、输出操作:fstream file(“ shuizhun.txt” ,ios:in) fstream out(“ result.txt” );:进一步巩固了程序的调试步骤,得以完善。2.3 三角网平差2.3.1
11、:程序设计基本思想:三角网平差主要是实现求得未知点的坐标(我是直接输入的坐标),坐标方位角,然后利用坐标和坐标方位角求出系数矩阵以及常数项矩阵。2.3.2:三角网平差步骤:根据已知点的坐标和相应的观测值利用前方(后方)交回公式求得未知点的坐标;:由点的坐标和计算待定边的近似坐标方位角和边长 S;:计算坐标方位角的改正数a,b;:计算误差方程式的常数项。注:后面的步骤同简介平差;2.3.3:主要程序分析:求系数矩阵 A以及常数项:先编写函数求得两个点的坐标方位角,然后调用函数分别求出每个观测值的两个坐标方位角,他们的差值即为常数项。 接下来求系数阵,先用公式求出系数,名师资料总结 - - -精品
12、资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 8 页 - - - - - - - - - 2012 年 4 月测绘程序设计实习报告第 4 |7 页进行判断,检查顶点号、起点号、终点号是不是未知点,若是,则对系数矩阵进行赋值,若不是,则不变。:/ 对点(x1,y1) 与(x2,y2) 求方位角double tan2angle(double y2, double y1, double x2, double x1) if (x2=x1) / 两点连线水平return 0; double val=atan
13、(y2-y1)/(x2-x1); if (x2-x10) val+=3.141592653; if (y2-y10) val+=2*3.141592653; return val; :/ 求系数矩阵for ( int r=0;rn;r+) S2=sqrt(S22);S1=sqrt(S12); if (p_pi=n1r) a1= *(sin( )/S2-sin( )/S1)/10; /求顶点的系数a2=- *(cos( )/S2-cos( )/S1)/10; / 求顶点的系数Ai(p_pi-m)*2=a1; Ai (p1i-m)*2+1=a2; if (p2i=n1r) b1=- *sin( )
14、/S2/10;/求角的终点的系数b2= *cos( )/S2/10; / 求角的终点的系数Ai(p2i-m)*2=b1; Ai(p2i-m)*2+1=b2; if (p1i=n1r) c1= *sin( )/S1/10; / 求角的起点的系数c2=- *cos( )/S1/10; /求角的起点的系数Ai (p1i-m)*2=c1; Ai (p1i-m)*2+1=c2; :求常数项:Y2=Yp2i-Yp_pi; X2=Xp2i-Xp_pi; S22=X2*X2+Y2*Y2; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心
15、整理 - - - - - - - 第 5 页,共 8 页 - - - - - - - - - 2012 年 4 月测绘程序设计实习报告第 5 |7 页Y1=Yp1i-Yp_pi; X1=Xp1i-Xp_pi; S12=X1*X1+Y1*Y1; 1=tan2angle(Yp1i,Yp_pi,Xp1i,Xp_pi);/坐标方位角 2=tan2angle(Yp2i,Yp_pi,Xp2i,Xp_pi);/坐标方位角double = 2- 1; if ( 0) +=2*3.141592653; qiuHD(deg1i,deg2i,deg3i,degHD); Li0=( -degHD)* ; 2.3.4:
16、程序注意事项:求坐标方位角时要分情况讨论;:角度与弧度不同位置的相互转化;:系数矩阵的求法。2.3.5:程序设计收获:掌握了三角网平差的C+ 语言程序求法,增加技能;:进一步巩固了与文件相关的简单的操作:锻炼团队合作意识与能力;2.4:测边网平差:2.3.1:程序设计基本思想:测边网平差主要是实现求得未知点的坐标(我是直接输入的坐标),然后根据坐标利用公式求出系数矩阵以及常数项矩阵。2.3.2:测边网平差步骤:根据已知点的坐标和相应的观测值利用前方(后方)交回公式求得未知点的坐标;:由点的坐标求相应的 , ,;:计算误差方程式常数项;:计算误差方程式的系数阵。注:后面的步骤同简介平差, 最后将
17、点的近似坐标加上求得的误差改正数即为平差之后的坐标值;2.3.3:主要程序分析:求误差方程式的常数项及系数矩阵:先求得 XX ,YY ,即坐标的差值,进而求得各侧边的系数项,同时也把常数项求出了。然后判断观测值的起点、终点是不是未知点,如果是未知点,则将求得的系数项赋值给系数矩阵A;如果不是未知点,则不变。for (int i=0;il;i+) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 8 页 - - - - - - - - - 2012 年 4 月测绘程序设计实习
18、报告第 6 |7 页 YY=Yp1i-Yp2i; XX=Xp1i-Xp2i; S=sqrt(XX*XX+YY*YY); L1i0=S-Li; / 求常数项a1=-XX/S; a2=-YY/S; /求系数阵for ( int r=0;rn;r+) if (p1i=n1r) Ai(p1i-m)*2=a1; Ai(p1i-m)*2+1=a2; if (p2i=n1r) Ai(p2i-m)*2=-a1; Ai(p2i-m)*2+1=-a2; 2.3.4:程序注意事项:系数矩阵 A 的位置求法: Ai(p1i-m)=a1;Ai(p1i-m)*2+1=a2;常数项的求法。2.3.5:程序设计收获:掌握了测
19、边网平差的C+ 语言程序求法,增加技能;:进一步巩固了与文件相关的简单的操作:锻炼团队合作意识与能力;四、我的不足:1、对数组、指针的掌握更加熟练,但对于类对象的操作没有多大提高,课后用类重新编写一遍程序;2、 文件操作环节太薄弱, 以后的学习中会加强在这方面的学习及编程操作。3、边角网平差未知点的坐标求法未利用程序实现。五、我的体会:我们一共进行了大约6 周课程的机房上机实习, 对于编程能力较弱的同学来说, 当面对程序代码时, 可能会非常害怕编程。 我的编程能力也一般, 不想编程,名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - -
20、 名师精心整理 - - - - - - - 第 7 页,共 8 页 - - - - - - - - - 2012 年 4 月测绘程序设计实习报告第 7 |7 页但还是依靠老师、同学的帮助以及自己的努力顺利完成了本学期测绘程序设计上机实习的任务,心里不禁又小小的成就感。实习初期还比较容易的, 是编写间接平差的代码, 因为上学期我们 误差理论与测量平差 课程在最后有一个程序设计,就是编写间接平差的程序。 在这期间,我又细致的操作了一遍,学会了矩阵的C+ 语言程序实现。之后,我们开始进行水准网平差的编程操作。设计水准网平差时, 主要是要把路线的操作转化为具体的程序实现,进而求出误差方程式的系数矩阵、
21、 常数项以及权阵, 后面的操作都与间接平差相同。在求这几个矩阵的时候,我应用了for 循环以及判断条件if、else 语句,终于求解出正确的答案,只是编写的代码比较复杂。三角网平差, 首先要利用各点的坐标以及标记的点号,求得坐标方位角, 进而求得系数矩阵以及常数项; 测边网平差比三角网平差容易许多,不需要求坐标方位角,而且求系数矩阵也比较容易,它与三角网平差有较大的相似之处。语言编程是计算机技术的一个重要体现,学好一门编程语言, 不仅可以反映出自己学习能力,也可以培养自己的创新意识。另外,我也了解到,面对电脑编写代码是痛苦的, 调试其中的 bug 更是痛苦的,学习编程语言必须需要有耐心和恒心,还要同学以及老师的帮助。但是,程序调试成功的时候,我们也会感受到莫大的成就感, 如果能够编写一种软件, 那更是对自己编程能力的一种肯定。当然,我也看到了自己在编程方面的不足,这种能力有待进一步加强和提高。通过此次实习, 我不仅提高了自己的编程能力,也掌握了一门技能, 以后的学习中,我会坚持学习编程。我想,这也会对自己以后的职业生涯提供很大的帮助。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 8 页 - - - - - - - - -