测绘程序设计实习报告Word格式.docx
- 文档编号:15221214
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:8
- 大小:37.16KB
测绘程序设计实习报告Word格式.docx
《测绘程序设计实习报告Word格式.docx》由会员分享,可在线阅读,更多相关《测绘程序设计实习报告Word格式.docx(8页珍藏版)》请在冰豆网上搜索。
1、实习内容概述:
第一次实习由老师系统的介绍了本学期上机实习的大体概况,讲解了测量平差的具体具体类型,给大家重新熟悉了间接平差的具体步骤。
之后由我们编写了一个小程序:
角度与弧度的相互转化;
第二次实习大家已经完成上次的实习任务,之后我们开始间接平差的实习,主要是矩阵间的操作;
第三次课开始,每次上机操作之前先由老师简单介绍本次课程需要完成的任务,之后给大家看PPT讲解程序设计的具体操作。
大约花费半个小时,剩下的时间我们自己编写代码。
期间有不懂的问题可以随时问老师、学长或者与其他同学交流讨论;
几次课之后,我们都完成了间接平差的实习,由老师负责检查。
检查完成之后,大家进行水准网平差的实习。
2、具体实习程序:
2.1角度与弧度的相互转化:
程序设计基本思想:
应用角度与弧度的比例关系,进行相互转化。
JD(角度)=HD(弧度)*180/π;
HD(弧度)=JD(角度)*π/180;
2.2间接平差:
2.2.1:
采用指针数组,为矩阵的行列动态分配空间,然后根据间接平差的步骤,一步步求得最后的结果。
间接平差的步骤:
①:
根据题目要求,写出误差方程式v=Aδx+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=Aδx+l;
2.2.3:
主要程序分析:
①:
矩阵相加:
应用for循环控制条件,C[i][j]=A[i][j]+B[i][j];
矩阵相乘:
应用for循环控制条件,sum=sum+A[i][k]*B[k][j];
矩阵求逆:
采用行列变换法求出矩阵的逆矩阵。
先初始化一个单位阵a[i][j],然后将N化为单位阵,相应的a[i][j]才用相同的变换,化为N-1;
2.2.4:
程序注意事项:
为指针数组动态分配空间,注意行列的大小。
如A:
m行n列,P:
m行m列,l:
m行1列,N:
m行m列等等;
一般的数据都采用double型,力求精确;
应用srtprecision()函数设置精度,同时注意包含头文件#include<
iomanip>
。
2.2.5:
程序设计收获:
重新温习了间接平差的解题思路和方法,加深印象;
掌握了一门技能,用程序实现间接平差的解题,简单、高级;
掌握了C++函数的运用,熟悉了相应的C++语言技巧,如setpricision()函数的运用;
与同学交流了思想,加深情谊,锻炼了团队合作意识与能力。
2.3水准网平差:
2.3.1:
已经编写了间接平差的程序,其中的矩阵操作可以直接运用。
水准网平差主要是实现对误差方程式系数矩阵、常数项、权阵的输出,要采用相应的程序技巧将水准网的路径转化为矩阵中的数字,以此实现矩阵的输出。
2.3.2:
水准网平差的步骤:
采用程序设计技巧,控制相应的循环条件,将误差方程式的系数阵A、常数项l以及权阵P求出,组成误差方程式v=Aδx+l;
②③④⑤⑥步同间接平差;
⑦:
求观测值改正之后的值L_L=L+v;
⑧:
求各未知点的高程值H_H=H+δx。
系数矩阵的求法:
◆先初始化系数矩阵A[m][n]为0矩阵;
◆然后控制循环条件,依次输入各段水准路线的起点、终点;
◆依次判断各水准路线的起点、终点在矩阵A中的位置,若是起点,则把原先的值0赋值为-1;
若是终点,则把原先的值0赋值为1,其余的不变,求得A。
常数项的求法:
◆对应水准网点的编号,初始化标记数组a[P](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观测高差为单位权观测,求出权阵P[i][j]=10/C[i][j];
④矩阵加法、相乘、求逆同间接平差。
设置精度函数setpricision():
应用setpricision()函数之后,后面的数据均按照本次设置的精度输出数据,因此,如果后面的数据要求精度不同,则需要重新应用setpricision()函数;
判断条件if、elseif语句使用时,注意括号里面是”==”,而不是”=”;
求δx,v时要注意单位的转化,求高程值、观测值的改正值的单位转化;
程序中应用文件读取操作时,注意包含头文件#include<
fstream>
输入已知点点号与高程不能同时进行,因为高程数组中的值用到了点号。
掌握了一门技巧:
应用C++语言求解水准网平差;
简单学会了文件读取、输出操作:
fstreamfile(“shuizhun.txt”,ios:
:
in)
fstreamout(“result.txt”);
进一步巩固了程序的调试步骤,得以完善。
2.3三角网平差
三角网平差主要是实现求得未知点的坐标(我是直接输入的坐标),坐标方位角,然后利用坐标和坐标方位角求出系数矩阵以及常数项矩阵。
三角网平差步骤:
根据已知点的坐标和相应的观测值利用前方(后方)交回公式求得未知点的坐标;
由点的坐标和计算待定边的近似坐标方位角α和边长S;
计算坐标方位角的改正数δa,δb;
计算误差方程式的常数项。
注:
后面的步骤同简介平差;
2.3.3:
求系数矩阵A以及常数项:
先编写函数求得两个点的坐标方位角,然后调用函数分别求出每个观测值的两个坐标方位角,他们的差值即为常数项。
接下来求系数阵,先用公式求出系数,进行判断,检查顶点号、起点号、终点号是不是未知点,若是,则对系数矩阵进行赋值,若不是,则不变。
//对点(x1,y1)与(x2,y2)求方位角
doubletan2angle(doubley2,doubley1,doublex2,doublex1)
{if(x2==x1)//两点连线水平
return0;
doubleval=atan((y2-y1)/(x2-x1));
if(x2-x1<
0)
val+=3.141592653;
if(y2-y1<
0&
&
x2-x1>
val+=2*3.141592653;
returnval;
}
//求系数矩阵
for(intr=0;
r<
n;
r++)
{
S2=sqrt(S22);
S1=sqrt(S12);
if(p_p[i]==n1[r])
{
a1=ρ*(sin(α)/S2-sin(α)/S1)/10;
//求顶点的系数
a2=-ρ*(cos(α)/S2-cos(α)/S1)/10;
//求顶点的系数
A[i][(p_p[i]-m)*2]=a1;
A[i][(p1[i]-m)*2+1]=a2;
}
if(p2[i]==n1[r])
b1=-ρ*sin(α)/S2/10;
//求角的终点的系数
b2=ρ*cos(α)/S2/10;
//求角的终点的系数
A[i][(p2[i]-m)*2]=b1;
A[i][(p2[i]-m)*2+1]=b2;
if(p1[i]==n1[r])
c1=ρ*sin(α)/S1/10;
//求角的起点的系数
c2=-ρ*cos(α)/S1/10;
//求角的起点的系数
A[i][(p1[i]-m)*2]=c1;
A[i][(p1[i]-m)*2+1]=c2;
}
求常数项:
Y2=Y[p2[i]]-Y[p_p[i]];
X2=X[p2[i]]-X[p_p[i]];
S22=X2*X2+Y2*Y2;
Y1=Y[p1[i]]-Y[p_p[i]];
X1=X[p1[i]]-X[p_p[i]];
S12=X1*X1+Y1*Y1;
α1=tan2angle(Y[p1[i]],Y[p_p[i]],X[p1[i]],X[p_p[i]]);
//坐标方位角
α2=tan2angle(Y[p2[i]],Y[p_p[i]],X[p2[i]],X[p_p[i]]);
//坐标方位角
doubleα=α2-α1;
if(α<
α+=2*3.141592653;
qiuHD(deg1[i],deg2[i],deg3[i],degHD);
L[i][0]=(α-degHD)*ρ;
2.3.4:
求坐标方位角时要分情况讨论;
角度与弧度不同位置的相互转化;
系数矩阵的求法。
2.3.5:
掌握了三角网平差的C++语言程序求法,增加技能;
进一步巩固了与文件相关的简单的操作
锻炼团队合作意识与能力;
2.4:
测边网平差:
测边网平差主要是实现求得未知点的坐标(我是直接输入的坐标),然后根据坐标利用公式求出系数矩阵以及常数项矩阵。
测边网平差步骤:
由点的坐标求相应的δX=X1-X2,δY=Y1-Y2,S;
计算误差方程式常数项L1[i]=S-L[i];
计算误差方程式的系数阵。
后面的步骤同简介平差,最后将点的近似坐标加上求得的误差改正数即为平差之后的坐标值;
求误差方程式的常数项及系数矩阵:
先求得XX,YY,即坐标的差值,进而求得各侧边的系数项,同时也把常数项求出了。
然后判断观测值的起点、终点是不是未知点,如果是未知点,则将求得的系数项赋值给系数矩阵A;
如果不是未
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 测绘 程序设计 实习 报告