大数据结构课程设计——导线网平差程序的设计与实现_第1页
大数据结构课程设计——导线网平差程序的设计与实现_第2页
大数据结构课程设计——导线网平差程序的设计与实现_第3页
大数据结构课程设计——导线网平差程序的设计与实现_第4页
大数据结构课程设计——导线网平差程序的设计与实现_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

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

2、m)。已知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角度观测值编R角度观测值(。)编R角度观测值(。)1163 45 049169 10 3026458 37109822 043250 18 11119453 504103 57 3412111 14 2358308 05137920 186258 54 1814268 06 047249 13 1

3、715180 41 188207 32 3416103 23 08表3边长观测值编R边长观测值(m)编R边长观测值(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号点坐

4、标根据1、2两点的坐标,可以反算出1、2方向的方位角T12,3号点的坐标为X3X1y3 y1S13 cos(T12 &3Sin(T12式子中S13为观测边长,为观测角度2 .计算流程从读入的数据循环计算未知点的坐标,已计算出的坐标当做已知坐标的点处理参加下次计 算,以此类推,逐步计算出未知点的坐标3 .实现算法CMatrix CPlaneNetAdjust:XYJS() CMatrix _XYJS(Pnumber,2);double T12;for(int i=0;i<Tnumber;i+) int k1=cezhani;double x1=xyk1.X;double y1=xy

5、k1.Y;if(x1=0) continue;int k2=huoshii;int k3=qianshii;if(xyk2.X>0&&xyk2.Y>0) T12=GetT12(k1,k2);double s12=Gets12(k1,k2);double s13=Gets12(k1,k3);double T13=T12+guancejiaoi.Guancezhi;double dx=s13*cos(T13);double dy=s13*sin(T13);xyk3.X=xyk1.X+dx;xyk3.Y=xyk1.Y+dy;for(int i=0;i<Pnumber

6、;i+) double temp1=xyi.X;double temp2=xyi.Y;_XYJS.setValue(i,0,temp1);_XYJS.setValue(i,1,temp2);文案return _XYJS;一3.2误差方程列立1.理论分析平面控制网的误差方程都是非线性方程,必须引入参数近 似值将误差方程线性化,?db?daarctan YB-YD- arctan YA YDXB XDXAXDSXDXAYDYA取)?的充分近似值X°, 2是微小量,在按台劳公式展开时可以略去二次和二次以上的项,而只取至一次项,于是 可对非线性平差值观测方程式线性化,于是有如下的式子 对于观

7、测角的改正数有?"Yjk ? X0k ?Yjk ?Yjk ?水 河产?j E?j TSxk 7SkF?k,jhViy°v 0y°Yjh ?Xjh ?丫中(S0h )2j(S0h)2j(Sj° )2"YJ° ?" X,k ?" Yjk斌针析?j商?Yjh (S0h)2?h"Xjk(Sjk )2?kII Z 0II V 0II Z0II V 0Li)Yjh ? Xjh ?Yjh ? Xjh00-0rxj0-2-?j-0rXh0-fyh( jh jk(S0h)2(S0h)2(S0h)2(S0h)2 对于边长观测

8、值的改正数有ViSjkx?Sjkyklili LiS0k ,(X0 X0)2 (Yk0 Yj0)22.实现算法如下:CMatrix CPlaneNetAdjust:B()CMatrix _B1(Lnumber,Pnumber*2);double a;double b;double c;double d;double m;double n;double ml;double n1;for(int i=0;i<Snumber;i+)int k1=starti;int k2=endi;double dx=xyk2.X-xyk1.X;double dy=xyk2.Y-xyk1.Y;a=-dx/Ge

9、ts12(k1,k2);b=-dy/Gets12(k1,k2);if(k1<knPnumber)_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(k2<knPnumber)_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;i<Tnumber;i

10、+)const double p=206.265;int 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/G

11、ets12(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(k1<knPnumber)_B1.setValue(i+Snumber,2*k1,0);_B1.setValue(i+Snumber,2*k1+1,0); 一else i

12、f(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*k2,0);_B1.setValue(i+Snumber,2*k2+1,0); 一else if(k2>=knPnumber)_B1.setValue(i+Snumber,2*k2,m1);_B1.setValue(i+Snumber,2*k2+1,n1); 一if(k3<knPnumber) _B1.setValue(i+Sn

13、umber,2*k3,0);_B1.setValue(i+Snumber,2*k3+1,0); 一else 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;j<2*Pnumber;j+)double temp=_B1.getValue(i,j);_B.setValue(i,

14、(j-2*knPnumber),temp); 一return _B;一3.3法方程构建与解算1.理论分析误差方程系数VBX?l构成法方程BTPB?BTPl02.实现代码计算LCMatrix CPlaneNetAdjust:L() CMatrix _L(Lnumber,1);double l;double s;double s0;for(int i=0;i<Snumber;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

15、*dy);l=s-s0;_L.setValue(i,0,l*1000);cout<<l<<endl;for(int i=0;i<Tnumber;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);A=GetA(k1,k2,k3);l=A13-A12;if(l<0)l=pi+l;if(l>=pi)l=l-pi;l=l-A

16、;cout<<rad_dms(A12)<<""<<rad_dms(A13)<<""<<rad_dms(A)<<""<<rad_dms(l)<<e ndl;_L.setValue(i+Snumber,0,rad_dms(l); 一一return _L;一计算权阵PCMatrix CPlaneNetAdjust:P()CMatrix _P(Lnumber,Lnumber);for(int i=0;i<Snumber;i+)doublete

17、mp=temp=Cjwucha*Cjwucha/(1*sqrt(bianchangi.Len)/(1*sqrt(bianchangi.Len);_P.setValue(i,i,temp); 一for(int i=Snumber;i<Lnumber;i+)_P.setValue(i,i,Cjwucha*Cjwucha/(Cjwucha*Cjwucha); 一return _P;一3.4精度估计1.单位权中误差间接平差与条件平差虽采用了不同的函数模型, 以两法的平差结果总是相等的,这是因为在满足 的,故平差值L? L V不因方法不同而异。 单位权方差的估值用ir式仍然是92VTPV?0,r2

18、.协因数阵在间接平差中,QXJQ?_1 _T 11Qx? NbbB PQPBNbb Nbb但它们是在相同的最小乘原理下进行的,所V T PV min 条件下的 V是唯一确定VTPV以其自由度,即VTPVn t3 .误差椭圆参数 点位误差椭圆参数EE2椭圆参数F2 -0( Qx?0(QxxCos2?0(QxxCos22Qy )0,QySinQySinPT)Qysin2 e)Qysin2 f)4 .实现代码voidCPlaneNetAdjust:ErrorEllipse() CMatrix_Q=Q();constdoublePAI=3.14159265358979312;doublem2=Cjwu

19、cha*Cjwucha;cout<<endl<<endl<<"cout<<"点名 点位误差=点位误差椭圆 ="<<endl;椭圆长半轴椭圆短半轴长轴方位角"<<endl;for(inti=0;i<(Pnumber-knPnumber);i+) doublemx2=_Q.getValue(2*i,2*i)*m2;/x 坐标中误差的平方 doublemy2=_Q.getValue(2*i+1,2*i+1)*m2;/y 坐标中误差的平方 doublemxy=_Q.getValue(2

20、*i,2*i+1)*m2;/xy 坐标的协方差 doubleK=sqrt(mx2-my2)*(mx2-my2)+4.0*mxy*mxy);doubleE=sqrt(0.5*(mx2+my2+K);/ 长轴doubleF=sqrt(0.5*(mx2+my2-K);/ 短轴doubleA;/误差椭圆长轴的方位角if(fabs(mxy)<1.0e-14)/ mxy = 0if(mx2>my2)A=0.0;elseA=0.5*PAI;else/ mxy * 0A=atan(E*E-mx2)/mxy);if(A<0.0)A+=PAI;cout<<endl;cout<&

21、lt;""<<Pnamei+knPnumber<<""<<Cjwucha*sqrt(_Q.getValue(2*i,2*i)+_Q.getValue(2*i+1,2*i+1)<<""<<E<<""<<F<<""<<rad_dms(A);3.5程序设计流程图IJ四、算法运行结果与分析五、小结1 .实习感受通过这次课程设计,我又对整本书有了一个更深的理解。其实课程设计就是将我们所学的理论知识应

22、用于实践的过程, 在这一过程中,进一步掌握测量平差的基本原理和基本公式, 并熟悉测量数据处理的基本技能和计算方法。这门课程与计算机程序完美地结合。这便要求我们在原有的解题思路中加入C+相言程序,并让它来帮助我们解决矩阵的复杂运算。 既然用到了程序,我们就必须保证其运算的简 洁性、正确性,尤其是在编写过程中要认真检查,为程序顺利运行打下基础。另外在各个子程序调用过程中,我们要充分考虑其顺序性并反复调试,以便得到理想结果。尽管在这次课程设计中遇到了很多困难,但我却得到了不少收获, 并培养了自己正确应用公式、综合分析和解决问题的能力,同时也为今后步入社会打下了一定的基础。另外,我们还要学会综合利用自

23、身所学的知识,并将它们联系起来帮助自己有效地解决实际中的问 题。总之,在这次课程设计中我不但过了比较充实的一周,还收获了不少知识。我或多或少明白,编程是一个循序渐进的过程, 我想真的能够在这方面有所突破, 就更要花时间多花 工夫2 .遇到的问题六、附录(完整代码)1 .平面控制网平差类的设计 在头文件 PlaneNetAdjust.h 下#include<iostream>#include"Matrix.h"using namespace std; struct XYint Index;double X;double Y;struct Bianchangstri

24、ng startPoint;string endPoint;double Len;struct Guancejiao int Index;string Cezhan;string Huozhan;string Qianzhan;double Guancezhi;class CPlaneNetAdjustpublic:CPlaneNetAdjust(void);CPlaneNetAdjust(void);void Getdata();屐取或据void Printdata();/数据显示 void outdata();/数据输出 CMatrix P();计算权阵 CMatrix L();/l 的计

25、算CMatrixB();/计算误差系数矩阵CMatrixQ();/计算协因数阵CMatrix XYJS();/计算近似坐标CMatrix dx();/参数平差值CMatrix V();残差计算void ErrorEllipse();/误差椭圆double Compute_T12(int k1,int k2); protected :double dms_rad(double a);double rad_dms(double a); int GetDianhao(string dianming);string GetDiaming(int dianhao);double Gets12(int k

26、1,int k2);double GetA(int k1,int k2,int k3);double GetT12(int k1,int k2);int Lnumber;int Snumber;int Tnumber;int Pnumber;int knPnumber;double Cjwucha;double Bcbiliwucha,Bcgudingwucha;XY*xy;Guancejiao *guancejiao;Bianchang *bianchang;CMatrix _XYJS;CMatrix _Q;CMatrix _B;CMatrix _P;CMatrix _L;CMatrix _

27、dx;string *Pname;int *start;int *end;int *cezhan;int *huoshi;int *qianshi;2 .平面控制网类的实现在文件 PlaneNetAdjust.cpp下#include "stdafx.h"#include "PlaneNetAdjust.h"#include<fstream>#include<iostream>#include<cctype>#include <iomanip>using namespace std;CPlaneNetAdj

28、ust:CPlaneNetAdjust(void)Lnumber=0;Snumber=0;Tnumber=0;Pnumber=0;knPnumber=0;CPlaneNetAdjust:CPlaneNetAdjust(void)delete Pname;delete xy;delete guancejiao;delete bianchang;delete start;delete end;double CPlaneNetAdjust:dms_rad(double a)/提取角度值的符号double sign=(a<0.0) ? -1.0 : 1.0;a=fabs(a);/提取角度值的整度

29、int d=(int)(a+0.00001)/10000.0);a=a-d*10000.0;if(a<0.0) d=d-1; a=a+10000;/提取角度值的整分及秒值int m=(int)(a+0.00001)/100.0);a=a-m*100;if(a<0.0) m=m-1; a=a+100.0;a=sign*(d*3600.0+m*60.0+a)/206264.806247096363; return a;/将角度的弧度值化为度分秒连写的角度(double型) double CPlaneNetAdjust:rad_dms(double a)a=a*206264.806247

30、096363;double sign=(a<0.0) ? -1.0 : 1.0;a=fabs(a);int d=(int)(a/3600.0+0.0000001);a=a-d*3600.0;if(a<0.0) d=d-1; a=a+3600.0; int m=(int)(a/60.0+0.0001);a=a-m*60.0;if(a<0.0) m=m-1; a=a+60.0; a=d*10000.0+m*100.0+a;return a*sign;void CPlaneNetAdjust:Getdata()string file=""ifstream inF

31、ile;cout<<endl;cout<<"请输入文件的位置和文件名:"<<endl;cin>>file;cout<<endl;inFile.open(file,ios:in);if(!inFile)cout<<"不能打开"<<endl;exit;inFile>>Lnumber;inFile>>Pnumber;inFile>>knPnumber;inFile>>Snumber;inFile>>Tnumber;in

32、File>> Cjwucha>>Bcbiliwucha>>Bcgudingwucha;xy=new XYPnumber;Pname=new stringPnumber;for(int i=0;i<Pnumber;i+) inFile>>Pnamei;inFile>>xyi.X;inFile>>xyi.Y ; xyi.Index=i;bianchang=new BianchangSnumber;for(int i=0;i<Snumber;i+) inFile>>bianchangi.startPoin

33、t;inFile>>bianchangi.endPoint;inFile>>bianchangi.Len;start=new intSnumber;end=new intSnumber;for(int i=0;i<Snumber;i+) starti=GetDianhao(bianchangi.startPoint);endi=GetDianhao(bianchangi.endPoint);guancejiao=new GuancejiaoTnumber;double *dms=new doubleTnumber;for(int i=0;i<Tnumber;

34、i+) inFile>>guancejiaoi.Cezhan;inFile>>guancejiaoi.Huozhan;inFile>>guancejiaoi.Qianzhan;inFile>>dmsi;guancejiaoi.Guancezhi=dms_rad(dmsi);guancejiaoi.Index=i;cezhan=new intTnumber;huoshi=new intTnumber;qianshi=new intTnumber;for(int i=0;i<Tnumber;i+) cezhani=GetDianhao(guan

35、cejiaoi.Cezhan);huoshii=GetDianhao(guancejiaoi.Huozhan);qianshii=GetDianhao(guancejiaoi.Qianzhan);cout<<"总点数:"<<Pnumber<<"边长观测数:"<<Snumber<<" 角度观测数:"<<Tnumber<<endl;/cout<<"测角中误差:"<<Cjwucha<<"测边固

36、定误差:"<<Bcgudingwucha<<"测边比例误差:"<<Bcbiliwucha <<endl<<endl;cout<<endl;cout<<"点的坐标(未知点坐标用 0表示):"<<endl;cout<<"点号"<<"点名"<<"X"<<" Y"<<endl;cout<<setprecisi

37、on(3)<<setiosflags (ios:fixed);for(int i=0;i<Pnumber;i+)cout<<i<<""<<Pnamei<<""<<xyi.X <<""<<xyi.Y <<endl;cout<<"边长观测:"<<endl;cout<<"起点"<<" 终点"<<" 观

38、测值"<<endl;for(int i=0;i<Snumber;i+) cout<<bianchangi.startPoint<<""<<bianchangi.endPoint<<""<<bianchangi.Len<<endl;cout<<"角度观测值:"<<endl;cout<<"测站"<<" 后视"<<" 前视"

39、<<" 观测值"<<endl;for(int i=0;i<Tnumber;i+) cout<<setprecision(4)<<setiosflags (ios:fixed);cout<<guancejiaoi.Cezhan<<""<<guancejiaoi.Huozhan<<“"<<guancejiaoi.Qianzhan <<""<<dmsi<<endl;int CPlan

40、eNetAdjust:GetDianhao(string dianming)for(int i=0;i<Pnumber;i+)if(Pnamei=dianming) return i;return -1;string CPlaneNetAdjust二GetDiaming(int dianhao)return Pnamedianhao;double CPlaneNetAdjust:Gets12(int k1,int k2)for(int i=0;i<Snumber;i+)if(k1=starti&&k2=endi)return bianchangi.Len;if(k2

41、=starti&&k1=endi)return bianchangi.Len;return -1;/找不到符合条件的角,返回负值double CPlaneNetAdjust二GetA(int k1,int k2,int k3)for(int i=0;i<Tnumber;i+)if(k1=cezhani&&k2=huoshii&&k3=qianshii)return guancejiaoi.Guancezhi;if(k1=cezhani&&k3=huoshii&&k2=qianshii)return guanc

42、ejiaoi.Guancezhi;return -1.0;/找不到符合条件的角,返回负值CMatrix CPlaneNetAdjust二P()CMatrix _P(Lnumber,Lnumber);for(int i=0;i<Snumber;i+)doubletemp=temp=Cjwucha*Cjwucha/(1*sqrt(bianchangi.Len)/(1*sqrt(bianchangi.Len) );_P.setValue(i,i,temp);.for(int i=Snumber;i<Lnumber;i+)_P.setValue(i,i,Cjwucha*Cjwucha/(C

43、jwucha*Cjwucha);.return _P;.double CPlaneNetAdjust二GetT12(int k1,int k2)const double Pi=3.1415926;double dx=xyk2.X -xyk1.X ;double dy=xyk2.Y -xyk1.Y ;double T=atan2(dy,dx);if(T<0)T=T+2.0*Pi;return T;CMatrix CPlaneNetAdjust:XYJS()CMatrix _XYJS(Pnumber,2);double T12;for(int i=0;i<Tnumber;i+) int

44、 k1=cezhani;double x1=xyk1.X;double y1=xyk1.Y;if(x1=0)continue;int k2=huoshii;int k3=qianshii;if(xyk2.X>0&&xyk2.Y>0) T12=GetT12(k1,k2);double s12=Gets12(k1,k2);double s13=Gets12(k1,k3);double T13=T12+guancejiaoi.Guancezhi;double dx=s13*cos(T13);double dy=s13*sin(T13);xyk3.X=xyk1.X+dx;x

45、yk3.Y=xyk1.Y+dy;for(int i=0;i<Pnumber;i+)double temp1=xyi.X;double temp2=xyi.Y;_XYJS.setValue(i,0,temp1);_XYJS.setValue(i,1,temp2);.return _XYJS;.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;i<Sn

46、umber;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=-dy/Gets12(k1,k2);if(k1<knPnumber)_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(k2<knPnumber)_B1.setValue(i,2*k2,0);_B1.setValue(i,

47、2*k2+1,0); else _B1.setValue(i,2*k2,-a);_B1.setValue(i,2*k2+1,-b);for(int i=0;i<Tnumber;i+)const double p=206.265;int 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

48、,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

49、;if(k1<knPnumber)_B1.setValue(i+Snumber,2*k1,0);_B1.setValue(i+Snumber,2*k1+1,0);.else 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*k2,0);_B1.setValue(i+Snumber,2*k2+1,0);.else if(k2>=knPnumber)_B1.setValue(i+S

50、number,2*k2,m1);_B1.setValue(i+Snumber,2*k2+1,n1);.if(k3<knPnumber)_B1.setValue(i+Snumber,2*k3,0);_B1.setValue(i+Snumber,2*k3+1,0);.else 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+).

51、for(int j=2*knPnumber;j<2*Pnumber;j+)double temp=_B1.getValue(i,j);_B.setValue(i,(j-2*knPnumber),temp);一return _B;.CMatrix CPlaneNetAdjust二L()CMatrix _L(Lnumber,1);double l;double s;double s0;for(int i=0;i<Snumber;i+)int k1=starti;int k2=endi;s=Gets12(k1,k2);double dx=xyk2.X-xyk1.X;double dy=x

52、yk2.Y-xyk1.Y;s0=sqrt(dx*dx+dy*dy);l=s-s0;_L.setValue(i,0,l*1000);cout<<l<<endl;for(int i=0;i<Tnumber;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);A=GetA(k1,k2,k3);l=A13-A12;if(l<0)l=p

53、i+l; if(l>=pi) l=l-pi; l=l-A;cout<<rad_dms(A12)<<""<<rad_dms(A13)<<""<<rad_dms(A)<<""<<rad_dms (l)<<endl;_L.setValue(i+Snumber,0,rad_dms(l); 一一return _L;一CMatrix CPlaneNetAdjust:Q()CMatrix N;N=B().transpose().operator*(

54、P().operator*(B();return N.inverse();CMatrix CPlaneNetAdjust:dx()CMatrix W;W=B().transpose().operator*(P().operator*(L();_dx=Q().operator*(W);return Q().operator*(W).operator*(0.001f);CMatrix CPlaneNetAdjust:V()(CMatrix F;F=B().operator*(dx()-L();return F;)void CPlaneNetAdjust:ErrorEllipse()(CMatrix

55、 _Q=Q();const double PAI=3.14159265358979312;double m2=Cjwucha*Cjwucha;cout<<endl<<endl<<"=点位误差椭圆="<<endl;cout<<” 点名点位误差椭圆长半轴椭圆短半轴长轴方位角"<<endl;for(int i=0;i<(Pnumber-knPnumber); i+)(double mx2=_Q.getValue(2*i,2*i)*m2; /x 坐标中误差的平方double my2=_Q.get

56、Value(2*i+1,2*i+1)*m2; y 坐标中误差的平方double mxy=_Q.getValue(2*i,2*i+1)*m2; /xy 坐标的协方差double K=sqrt(mx2-my2)*(mx2-my2)+4.0*mxy*mxy);double E=sqrt(0.5*(mx2+my2+K); 长轴double F=sqrt(0.5*(mx2+my2-K); 短轴double A; /腹差椭圆长轴的方位角if(fabs(mxy)<1.0e-14) / mxy = 0(if(mx2>my2) A=0.0;else A=0.5*PAI;)else / mxy * 0

57、(A=atan( (E*E-mx2)/mxy);)if(A<0.0)A+=PAI;cout<<endl;cout<<""<<Pnamei+knPnumber<<""<<Cjwucha*sqrt(_Q.getValue(2*i,2*i) +_Q.getValue(2*i+1,2*i+1)<<""<<E<<""<<F<<""<<rad_dms(A);一)void

58、CPlaneNetAdjust:Printdata()(_dx=dx();_XYJS=XYJS();cout<<"总点数:"<<Pnumber<<" 边长观测数:"<<Snumber<<" 角度观测数:"<<Tnumber<<endl;cout<<"测角中误差:"<<Cjwucha<<"测边固定误差:"<<Bcgudingwucha<<"测边比

59、例误差:"<<Bcbiliwucha <<endl<<endl;cout<<"点的坐标(未知点坐标用 0表示):"<<endl;cout<<"点号"<<"点名"<<"X"<<" Y"<<endl;for(int i=0;i<Pnumber;i+) (cout<<i<<""<<Pnamei<<&q

60、uot;"<<xyi.X <<""<<xyi.Y <<endl;)cout<<"边长观测:"<<endl;cout<<"起点"<<" 终点"<<" 观测值"<<endl;for(int i=0;i<Snumber;i+) (cout<<bianchangi.startPoint<<""<<bianchangi.endPoint<<"&qu

温馨提示

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

评论

0/150

提交评论