测绘程序设计实习报告.docx_第1页
测绘程序设计实习报告.docx_第2页
测绘程序设计实习报告.docx_第3页
测绘程序设计实习报告.docx_第4页
测绘程序设计实习报告.docx_第5页
免费预览已结束,剩余3页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2012年4月 测绘程序设计实习报告测绘程序设计实习报告院系: 姓名:班级:学号:2012年4月测绘程序设计实习报告一、总述:本学期我们测绘程序设计课程共有6周课程的实习,程序设计的题目是基于上学期误差理论与测量平差课程的设计,主要有水准网平差、边角网平差、GPS网平差。由于时间的问题,本学期程序设计主要是水准网平差,有余力的同学继续向下做。二、实习时间地点及小组安排:1、实习时间:每周周二、周五下午四节课;2、实习地点;信息楼208机房;3、小组安排:以小组为单位,每组5-6个人,每个小组指定一位编程能力较好的同学作为组长,负责小组人员到课情况、作业完成程度、指导成员上机以及负责日常作业的检查。三、课程上机实习:1、实习内容概述:第一次实习由老师系统的介绍了本学期上机实习的大体概况,讲解了测量平差的具体具体类型,给大家重新熟悉了间接平差的具体步骤。之后由我们编写了一个小程序:角度与弧度的相互转化;第二次实习大家已经完成上次的实习任务,之后我们开始间接平差的实习,主要是矩阵间的操作;第三次课开始,每次上机操作之前先由老师简单介绍本次课程需要完成的任务,之后给大家看PPT讲解程序设计的具体操作。大约花费半个小时,剩下的时间我们自己编写代码。期间有不懂的问题可以随时问老师、学长或者与其他同学交流讨论;几次课之后,我们都完成了间接平差的实习,由老师负责检查。检查完成之后,大家进行水准网平差的实习。2、具体实习程序:2.1角度与弧度的相互转化:程序设计基本思想:应用角度与弧度的比例关系,进行相互转化。JD(角度)=HD(弧度)*180/;HD(弧度)=JD(角度)*/180;2.2间接平差:2.2.1:程序设计基本思想:采用指针数组,为矩阵的行列动态分配空间,然后根据间接平差的步骤,一步步求得最后的结果。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.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()函数设置精度,同时注意包含头文件#include。2.2.5:程序设计收获:重新温习了间接平差的解题思路和方法,加深印象;:掌握了一门技能,用程序实现间接平差的解题,简单、高级;:掌握了C+函数的运用,熟悉了相应的C+语言技巧,如setpricision()函数的运用;:与同学交流了思想,加深情谊,锻炼了团队合作意识与能力。2.3水准网平差:2.3.1:程序设计基本思想:已经编写了间接平差的程序,其中的矩阵操作可以直接运用。水准网平差主要是实现对误差方程式系数矩阵、常数项、权阵的输出,要采用相应的程序技巧将水准网的路径转化为矩阵中的数字,以此实现矩阵的输出。2.3.2:水准网平差的步骤:采用程序设计技巧,控制相应的循环条件,将误差方程式的系数阵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;在输入水准路线起始点的同时,判断,如果起点标记为0,终点标记为1或起点标记为1,终点标记为0,则求出未知点的近似高程H,并求得常数项l,如果起始点分别标记为0和2或起始点分别标记为2和0,并把未知点点号标记为2;这样就把水准路线中带有已知点路线的未知高程点求得了近似高程H和常数项l;控制循环条件,判断标记数组,如果有1值,判断,如果起始点分别标记为1和2或者是起始点分别标记为2和1,则求得未知点的高程和该路线的常数项l,并把未知点标记为2,如果起始点都为2,则求得该路线的常数项l;至此,求出了常数项l。:权阵的求法:依次输入各段水准路线的高程,以10km观测高差为单位权观测,求出权阵Pij=10/Cij;矩阵加法、相乘、求逆同间接平差。2.2.4:程序注意事项:设置精度函数setpricision():应用setpricision()函数之后,后面的数据均按照本次设置的精度输出数据,因此,如果后面的数据要求精度不同,则需要重新应用setpricision()函数;:判断条件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:程序设计基本思想:三角网平差主要是实现求得未知点的坐标(我是直接输入的坐标),坐标方位角,然后利用坐标和坐标方位角求出系数矩阵以及常数项矩阵。2.3.2:三角网平差步骤:根据已知点的坐标和相应的观测值利用前方(后方)交回公式求得未知点的坐标;:由点的坐标和计算待定边的近似坐标方位角和边长S;:计算坐标方位角的改正数a,b;:计算误差方程式的常数项。注:后面的步骤同简介平差;2.3.3:主要程序分析: 求系数矩阵A以及常数项:先编写函数求得两个点的坐标方位角,然后调用函数分别求出每个观测值的两个坐标方位角,他们的差值即为常数项。接下来求系数阵,先用公式求出系数,进行判断,检查顶点号、起点号、终点号是不是未知点,若是,则对系数矩阵进行赋值,若不是,则不变。:/对点(x1,y1)与(x2,y2)求方位角double tan2angle(double y2,double y1,double x2,double x1)if(x2=x1)/两点连线水平return 0;double val=atan(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()/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;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:程序注意事项:求坐标方位角时要分情况讨论;:角度与弧度不同位置的相互转化;:系数矩阵的求法。2.3.5:程序设计收获:掌握了三角网平差的C+语言程序求法,增加技能;:进一步巩固了与文件相关的简单的操作:锻炼团队合作意识与能力;2.4:测边网平差:2.3.1:程序设计基本思想:测边网平差主要是实现求得未知点的坐标(我是直接输入的坐标),然后根据坐标利用公式求出系数矩阵以及常数项矩阵。2.3.2:测边网平差步骤:根据已知点的坐标和相应的观测值利用前方(后方)交回公式求得未知点的坐标;:由点的坐标求相应的,;:计算误差方程式常数项;:计算误差方程式的系数阵。注:后面的步骤同简介平差,最后将点的近似坐标加上求得的误差改正数即为平差之后的坐标值;2.3.3:主要程序分析:求误差方程式的常数项及系数矩阵:先求得XX,YY,即坐标的差值,进而求得各侧边的系数项,同时也把常数项求出了。然后判断观测值的起点、终点是不是未知点,如果是未知点,则将求得的系数项赋值给系数矩阵A;如果不是未知点,则不变。for(int i=0;il;i+)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:程序设计收获:掌握了测边网平差的C+语言程序求法,增加技能;:进一步巩固了与文件相关的简单的操作:锻炼团队合作意识与能力;四、我的不足:1、对数组、指针的掌握更加熟练,但对于类对象的操作没有多大提高,课后用类重新编写一遍程序;2、文件操作环节太薄弱,以后的学习中会加强在这方面的学习及编程操作。3、边角网平差未知点的坐标求法未利用程序实现。五、我的体会:我们一共进行了大约6周课程的机房上机实习,对于编程能力较弱的同学来说,当面对程序代码时,可能会非常害怕编程。我的编程能力也一般,不想编程,但还是依靠老师、同学的帮助以及自己的努力顺利完成了本学期测绘程序设计上机实习的任务,心里不禁又小小的成就感。实习初期还比较容易的,是编写间接平差的代码,因为上学期我们误差理论与测量平差课程在最后有一个程序设计,就是编写间接平差的程序。在这期间,我又细致的操作了一遍,学会了矩阵的C+语言程序实现。之后,我们开始进行水准网平差的编程操作。设计水准网平差时,主要是要把路线的操作转化为具体的程序实现,进而求出误差方程式的系数矩阵、常数项以及权阵,后面的操作都与间接平差相同。在求这几个矩阵的时候,我应用了for循环以及判断条件if、else语句,终于求解出正确的答案,只是编写的代码比较复杂。三角网平差,首先要利用各点的坐标以及标记的点号,求得坐标方位角,进而求得系数矩阵以及常数项;测边网平差比三角网平差容易许多,不需要求坐标方位角,而且求系数矩阵也比较容易,它与三角网平差有较大的相似之处。语言编程是计算机技术的一个重要体现,学好一门编

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论