数据结构课程设计——导线网平差程序设计与实现

上传人:第*** 文档编号:61594050 上传时间:2018-12-05 格式:DOCX 页数:24 大小:157.42KB
返回 下载 相关 举报
数据结构课程设计——导线网平差程序设计与实现_第1页
第1页 / 共24页
数据结构课程设计——导线网平差程序设计与实现_第2页
第2页 / 共24页
数据结构课程设计——导线网平差程序设计与实现_第3页
第3页 / 共24页
数据结构课程设计——导线网平差程序设计与实现_第4页
第4页 / 共24页
数据结构课程设计——导线网平差程序设计与实现_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《数据结构课程设计——导线网平差程序设计与实现》由会员分享,可在线阅读,更多相关《数据结构课程设计——导线网平差程序设计与实现(24页珍藏版)》请在金锄头文库上搜索。

1、设计二:导线网平差程序的设计与实现一、设计目的立足于数据结构与测绘软件开发这一课程的课堂教学及其实验课程设计,为着实提高学生基于计算机辅助的方式切实解决工程实际问题的动手能力,通过本实习,一方面,使学生深入了解课堂所学知识,另一方面,通过实践掌握测绘行业软件设计与开发的基本方法,深刻掌握矩阵运算、曲线/曲面拟合的数值解法,掌握不同类型的典型测绘软件设计方法,使得学生初步具备编写测绘软件常用算法的能力以及开发中小规模测绘专业软件的能力。二、设计内容有导线网如图,观测了14条边长和16个转折角,已知测角精度,测边精度为。已知A、B、C、D、E、F点的坐标(无误差),如下表:表1 已知点数据点号X(

2、m)Y(m)A5256.9534520.068B5163.7524281.277C3659.3713621.210D4119.8793891.607E4581.1505345.292F4851.5545316.953表2 角度观测值编号角度观测值( )编号角度观测值( )1163 45 049169 10 30264 58 371098 22 043250 18 111194 53 504103 57 3412111 14 23583 08 051379 20 186258 54 1814268 06 047249 13 1715180 41 188207 32 3416103 23 08表3

3、 边长观测值编号边长观测值(m)编号边长观测值(m)1238.6198241.5602170.7599224.9963217.86910261.8264318.17311279.8405245.63512346.4436215.51413312.1097273.82914197.637试编程实现该导线网的平差,给出计算结果,并对其精度进行评价。三、关键问题描述3.1 未知点近似坐标计算平面控制网进行平差计算时需要计算未知点的近似坐标1.坐标计算公式1、2点的坐标已知,并观测了1-2、1-3的夹角,根据这些数据可以求出3号点坐标根据1、2两点的坐标,可以反算出1、2方向的方位角T12,3号点的坐

4、标为式子中S13为观测边长,为观测角度2.计算流程从读入的数据循环计算未知点的坐标,已计算出的坐标当做已知坐标的点处理参加下次计算,以此类推,逐步计算出未知点的坐标3.实现算法CMatrix CPlaneNetAdjust:XYJS()CMatrix _XYJS(Pnumber,2);double T12;for(int i=0;i0&xyk2.Y0) T12=GetT12(k1,k2);double s12=Gets12(k1,k2);double s13=Gets12(k1,k3);double T13=T12+guancejiaoi.Guancezhi;double dx=s13*cos

5、(T13);double dy=s13*sin(T13);xyk3.X=xyk1.X+dx; xyk3.Y=xyk1.Y+dy;for(int i=0;iPnumber;i+)double temp1=xyi.X;double temp2=xyi.Y;_XYJS.setValue(i,0,temp1);_XYJS.setValue(i,1,temp2);return _XYJS;3.2 误差方程列立1.理论分析平面控制网的误差方程都是非线性方程,必须引入参数近似值将误差方程线性化, 取的充分近似值 ,是微小量,在按台劳公式展开时可以略去二次和二次以上的项,而只取至一次项,于是可对非线性平差值观

6、测方程式线性化,于是有如下的式子对于观测角的改正数有对于边长观测值的改正数有2.实现算法如下:CMatrix CPlaneNetAdjust:B()CMatrix _B1(Lnumber,Pnumber*2);double a;double b;double c;double d;double m;double n;double m1;double n1;for(int i=0;iSnumber;i+)int k1=starti;int k2=endi;double dx=xyk2.X-xyk1.X;double dy=xyk2.Y-xyk1.Y;a=-dx/Gets12(k1,k2);b=-

7、dy/Gets12(k1,k2);if(k1knPnumber)_B1.setValue(i,2*k1,0);_B1.setValue(i,2*k1+1,0);else _B1.setValue(i,2*k1,a); _B1.setValue(i,2*k1+1,b);if(k2knPnumber)_B1.setValue(i,2*k2,0);_B1.setValue(i,2*k2+1,0);else_B1.setValue(i,2*k2,-a);_B1.setValue(i,2*k2+1,-b);for(int i=0;iTnumber;i+)const double p=206.265;in

8、t k1=cezhani;int k3=huoshii;int k2=qianshii;double dx12=xyk2.X-xyk1.X;double dy12=xyk2.Y-xyk1.Y;double dx13=xyk3.X-xyk1.X;double dy13=xyk3.Y-xyk1.Y;c=(p*dx13/Gets12(k1,k3)/Gets12(k1,k3)-p*dx12/Gets12(k1,k2)/Gets12(k1,k2);c=-c;d=-p*dy13/Gets12(k1,k3)/Gets12(k1,k3)+p*dy12/Gets12(k1,k2)/Gets12(k1,k2);d

9、=-d;m=-p*dy13/Gets12(k1,k3)/Gets12(k1,k3);m=-m;n=p*dx13/Gets12(k1,k3)/Gets12(k1,k3);n=-n;m1=p*dy12/Gets12(k1,k2)/Gets12(k1,k2);m1=-m1;n1=-p*dx12/Gets12(k1,k2)/Gets12(k1,k2);n1=-n1;if(k1=knPnumber)_B1.setValue(i+Snumber,2*k1,c);_B1.setValue(i+Snumber,2*k1+1,d);if(k2=knPnumber)_B1.setValue(i+Snumber,2

10、*k2,m1);_B1.setValue(i+Snumber,2*k2+1,n1);if(k3=knPnumber)_B1.setValue(i+Snumber,2*k3,m);_B1.setValue(i+Snumber,2*k3+1,n);CMatrix _B(Lnumber,2*(Pnumber-knPnumber);for(int i=0;i_B1.getRow();i+)for(int j=2*knPnumber;j2*Pnumber;j+)double temp=_B1.getValue(i,j);_B.setValue(i,(j-2*knPnumber),temp);return

11、 _B;3.3 法方程构建与解算1.理论分析误差方程系数构成法方程2.实现代码 计算LCMatrix CPlaneNetAdjust:L()CMatrix _L(Lnumber,1);double l;double s;double s0;for(int i=0;iSnumber;i+)int k1=starti;int k2=endi;s=Gets12(k1,k2);double dx=xyk2.X-xyk1.X;double dy=xyk2.Y-xyk1.Y;s0=sqrt(dx*dx+dy*dy);l=s-s0;_L.setValue(i,0,l*1000);/coutlendl;for(int i=0;iTnumber;i+)const double pi=2*3.1415926;double A12;double A13;double A;int k1=cezhani;int k2=huoshii;int k3=qianshii;A12=GetT12(k1,k2);A13=GetT12(k1,k3);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

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