您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 设计及方案 > 数据结构课程设计导线网平差程序的设计与实现
设计二:导线网平差程序的设计与实现一、设计目的立足于《数据结构与测绘软件开发》这一课程的课堂教学及其实验课程设计,为着实提高学生基于计算机辅助的方式切实解决工程实际问题的动手能力,通过本实习,一方面,使学生深入了解课堂所学知识,另一方面,通过实践掌握测绘行业软件设计与开发的基本方法,深刻掌握矩阵运算、曲线/曲面拟合的数值解法,掌握不同类型的典型测绘软件设计方法,使得学生初步具备编写测绘软件常用算法的能力以及开发中小规模测绘专业软件的能力。二、设计内容有导线网如图,观测了14条边长和16个转折角,已知测角精度10,测边精度为1.0()()SSmmm。已知A、B、C、D、E、F点的坐标(无误差),如下表:表1已知点数据点号X(m)Y(m)A5256.9534520.068B5163.7524281.277C3659.3713621.210D4119.8793891.607E4581.1505345.292F4851.5545316.953表2角度观测值编号角度观测值(°′″)编号角度观测值(°′″)1163450491691030264583710982204325018111194535041035734121111423583080513792018625854181426806047249131715180411882073234161032308表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号点的坐标为)sin()cos(121313121313TSyyTSxx式子中S13为观测边长,为观测角度2.计算流程从读入的数据循环计算未知点的坐标,已计算出的坐标当做已知坐标的点处理参加下次计算,以此类推,逐步计算出未知点的坐标3.实现算法CMatrixCPlaneNetAdjust::XYJS(){CMatrix_XYJS(Pnumber,2);doubleT12;for(inti=0;iTnumber;i++){intk1=cezhan[i];doublex1=xy[k1].X;doubley1=xy[k1].Y;if(x1=0){continue;}intk2=huoshi[i];intk3=qianshi[i];if(xy[k2].X0&&xy[k2].Y0){T12=GetT12(k1,k2);}doubles12=Gets12(k1,k2);doubles13=Gets12(k1,k3);doubleT13=T12+guancejiao[i].Guancezhi;doubledx=s13*cos(T13);doubledy=s13*sin(T13);xy[k3].X=xy[k1].X+dx;xy[k3].Y=xy[k1].Y+dy;}for(inti=0;iPnumber;i++){doubletemp1=xy[i].X;doubletemp2=xy[i].Y;_XYJS.setValue(i,0,temp1);_XYJS.setValue(i,1,temp2);}return_XYJS;}3.2误差方程列立1.理论分析平面控制网的误差方程都是非线性方程,必须引入参数近似值将误差方程线性化,取Xˆ的充分近似值0X,xˆ是微小量,在按台劳公式展开时可以略去二次和二次以上的项,而只取至一次项,于是可对非线性平差值观测方程式线性化,于是有如下的式子对于观测角的改正数有对于边长观测值的改正数有2.实现算法如下:CMatrixCPlaneNetAdjust::B(){CMatrix_B1(Lnumber,Pnumber*2);doublea;doubleb;doublec;doubled;doublem;doublen;doublem1;doublen1;for(inti=0;iSnumber;i++){intk1=start[i];intk2=end[i];doubledx=xy[k2].X-xy[k1].X;doubledy=xy[k2].Y-xy[k1].Y;a=-dx/Gets12(k1,k2);b=-dy/Gets12(k1,k2);if(k1knPnumber){DADADBDBDADBXXYYXXYYLˆˆarctanˆˆarctanˆˆˆ122ˆˆSADADYYXXkjkjkkjkjkjjkjkjjkjkjkySYxSYySXxSYˆ)(ˆ)(ˆ)(ˆ)(ˆ200200200200hjhjhhjhjhjjhjhjjhjhjhySYxSYySXxSYˆ)(ˆ)(ˆ)(ˆ)(ˆ200200200200)(ˆ)(ˆ)(ˆ)(ˆ)(ˆ)(ˆ)(ˆ)(ˆ)(00200200200200200200200200ijkjhhjhjhhjhjhjjhjhjjhjhkjkjkkjkjkjjkjkjjkjkiLySXxSYySXxSYySXxSYySXxSYvikjkjkkjkjkjjkjkjjkjkilySYxSXySYxSXvˆˆˆˆ000000000jkiiSLl2002000)()(jkjkjkYYXXS_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(inti=0;iTnumber;i++){constdoublep=206.265;intk1=cezhan[i];intk3=huoshi[i];intk2=qianshi[i];doubledx12=xy[k2].X-xy[k1].X;doubledy12=xy[k2].Y-xy[k1].Y;doubledx13=xy[k3].X-xy[k1].X;doubledy13=xy[k3].Y-xy[k1].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=-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(k1knPnumber){_B1.setValue(i+Snumber,2*k1,0);_B1.setValue(i+Snumber,2*k1+1,0);}elseif(k1=knPnumber){_B1.setValue(i+Snumber,2*k1,c);_B1.setValue(i+Snumber,2*k1+1,d);}if(k2knPnumber){_B1.setValue(i+Snumber,2*k2,0);_B1.setValue(i+Snumber,2*k2+1,0);}elseif(k2=knPnumber){_B1.setValue(i+Snumber,2*k2,m1);_B1.setValue(i+Snumber,2*k2+1,n1);}if(k3knPnumber){_B1.setValue(i+Snumber,2*k3,0);_B1.setValue(i+Snumber,2*k3+1,0);}elseif(k3=knPnumber){_B1.setValue(i+Snumber,2*k3,m);_B1.setValue(i+Snumber,2*k3+1,n);}}CMatrix_B(Lnumber,2*(Pnumber-knPnumber));for(inti=0;i_B1.getRow();i++){for(intj=2*knPnumber;j2*Pnumber;j++){doubletemp=_B1.getValue(i,j);_B.setValue(i,(j-2*knPnumber),temp);}}return_B;}3.3法方程构建与解算1.理论分析误差方程系数构成法方程2.实现代码①计算LCMatrixCPlaneNetAdjust::L(){CMatrix_L(Lnumber,1);doublel;doubles;doubles0;for(inti=0;iSnumber;i++){intk1=start[i];intk2=end[i];s=Gets12(k1,k2);doubledx=xy[k2].X-xy[k1].X;doubledy=xy[k2].Y-xy[k1].Y;s0=sqrt(dx*dx+dy*dy);l=s-s0;_L.setValue(i,0,l*1000);//coutlendl;}for(inti=0;iTnumber;i++){constdoublepi=2*3.1415926;doubleA12;lxBVˆ0ˆPlBxPBBTTminPVVTVLLˆ2020ˆPVVTdoubleA13;doubleA;intk1=cezhan[i];intk2=huoshi[i];intk3=qianshi[i];A12=GetT12(k1,k2);A13=GetT12(k1,k3);A=GetA(k1,k2,k3);l=A13-A12;if(l0){l=pi+l;}if(l=pi){l=l-pi;}l=l-A;//coutrad_dms(A12)rad_dms(A13)rad_dms(A)rad_dms(l)endl;_L.setValue(i+Snumber,0,rad_dms(l));}return_L;}②计算权阵PCMatrixCPlaneNetAdjust::P(){CMatrix_P(Lnumber,Lnumber);for(inti=0;iSnumber;i++){doubletemp=temp=Cjwucha*Cjwucha/(1*sqrt(bianchang[i].Len))/(1*sqrt(bianchang[i].Len));_P.setValue(i,i,temp);}for(inti=Snumber;iLnumber;i++){_P.setValue(i,i,Cjwucha*Cjwucha/(Cjwucha*Cjwucha));}return_P;}3.4精度估计1.单位权中误差间接平差与条件平差虽采用了不同的
本文标题:数据结构课程设计导线网平差程序的设计与实现
链接地址:https://www.777doc.com/doc-2334342 .html