2015中南大学测绘程序课程设计报告(含代码界面设计数据格式)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

中南大学测绘程序课程设计报告姓名:XXXXX学号:XXXXXX指导老师:XXX专业班级:XXXX1系统设计1、实现功能1.1优化设计:根据控制网的观测精度与网形,全面评定网的精度1.2数据输入:使用外部数据倒入,通过读取.txt格式观测文件实现数据输入1.3平差计算:对观测数据进行精密平差计算,得到平差后的点位坐标,方向观测值,边长观测值等,精度评定,并弹出文本框输出成果。1.4画图:控制网图形输出,绘制误差椭圆,以及平差结果导出到txt文件中。2、系统总体框架*:界面设计导线网平差系统数据输入平差计算并输出成果画图退出2.1数据输入2.1.1文件格式:2(已知点数据个数)1,31250.2500,11500.4100(已知点数据)2,33256.5700,10900.84003(未知点数据个数)3,4,(未知点数据)5,8(距离观测数据个数)1,3,2300.06001,4,3090.35302,5,3643.23402,3,2115.9190(距离观测数据)2,4,4363.61103,5,2169.07303,4,2620.90904,5,3922.860018(方向观测数据个数)1,2,01,3,57.2032101,4,113.1406352,5,02,3,32.1222922,4,57.5015302,1,98.2612733,1,03,2,56.2537793,5,172.533944(方向观测数据)3,4,282.2953834,1,04,2,26.0954124,3,46.3617984,5,77.5946715,4,05,3,39.0017795,2,70.1951512.1.2数据输入实现:(1)创建角度类#pragmaonce//枚举数据类型,用于代表角度形式enumAngleStyle{DEG,DMS,RAD};classCAngle{public:CAngle(doublevalue=0,AngleStylestyle=DMS);~CAngle(void);private:doubledValue;//角度值AngleStylenCurStyle;//当前角度值类型private://设置常成员函数的作用:.类成员不会被改变//2.可以被常类变量调用doubleDeg(doubledDms)const;doubleDms(doubledDeg)const;public://获取指定的类型获取角度值,//由于返回的是dValue的引用,所以该值大小可以改变,即可以进行赋值double&operator()(AngleStylestyle);//重载,获取指定的类型获取角度值,该值不可改变,constCAngle类型变量调用doubleoperator()(AngleStylestyle)const;//重载运算符+/-friendCAngleoperator+(constCAngle&m1,constCAngle&m2);friendCAngleoperator-(constCAngle&m1,constCAngle&m2);};(2)创建点类用于存取点的信息,如坐标、点号、椭圆函数#pragmaonceclassCControlPoint//控制点{public:CControlPoint();~CControlPoint();doubleX;doubleY;CStringstrPointID;//点号intstate;intflg;//判断测站点是否相同用doubledE;doubledF;doubledQ;//椭圆函数doubledMx;doubledMy;doubledMk;//矩阵计算};(3)创建距离类用于存取距离观测信息,如测站方向点、观测方向点、距离观测值#pragmaonce#includeControlPoint.h#includeAngle.hclassCDistObs//距离观测值{public:CDistObs();~CDistObs();public:CControlPoint*cpStart,*cpEnd;//测站与照准点doubledDist;//距离观测值};(4)创建方向类用于存取方向观测信息,如测站方向点、照准方向点、方向观测值#pragmaonce#includeControlPoint.h#includeAngle.hclassCAngleObs//方向观测值{public:CAngleObs();~CAngleObs();public:CControlPoint*cpStation;//起始点CControlPoint*cpEnd;//照准点CAngleObsAngle;//方向观测值};(4)读取文件函数:boolLoadObsData(constCString&strFileName,CString&screen);,此函数功能为通过传入的文件名strFileName进行文件读写,并将信息存到相应成员数据中。2.2近似坐标推算2.2.1近似坐标计算原理按方向和边长观测值计算导线网中待定点的近似坐标2.2.2具体实现(1)坐标概算函数:voidCoordinateEstimates();,函数设计思路:设计一个循环如果没有读取数据则返回。然后通过创建一个bool类型的函数lsCoordinateEstimate来判断有没有计算过坐标的近似值,防止其陷入死循环。然后开始用迭代:首先判断测站点是否已知点,然后再判断测站点相同的情况下找到照准点近似坐标未算出的照准点(有方向观测值,这样才可以通过极坐标法计算出近似值),然后根据近似坐标计算原理计算方向观测j(条件循环的时候定义两个参数i,j)的观测方向近似坐标,需要注意的是,在近似坐标推算中,循环计算一次之后,必须判断是否所有未知点的近似坐标已经推算出来,没有的话再进行循环计算。(这样做主要是为了防止在节点控制网中,当未知点很多时,可能推算到一个点之后,它所连得所有控制点均为坐标未知点,这样在一次循环bkaAtabtd)sin(sin)cos(cosAtdytdyyAtdxtdxxabaakabaak中就会跳过这个控制点,这个点的近似坐标就没有计算出来。而在下一次循环中,它所连得控制点中就会有坐标已知点,这样这个点的近似坐标就计算出来了)。(2)计算流程图:i=i+1否j=j+1是否m_pAngleObs中第j个的测站点和m_pAngleObs中第i个测站点相同,观测方向点未知坐标输入系统inti=0tom_pAngleObsCountm_pAngleObs中第i个的测站点和观测方向点是否已知是再次从i=0循环否是2.3平差计算2.3.1平差计算原理设:观测值为L,其权为P,相应的改正数为V,必要观测值个数为t,选定未知数X,则有误差方程根据最小二乘原理:,求极值,,得:法方程:法方程的解:单位权中误差:2.3.2间接平差流程(1)列出误差方程及条件式(2)定权(3)组成法方程(4)解算法方程,求得dX=[dx1dy1dx2dy2…](5)平差后的坐标值计算X=X+dX。(6)精度评定,计算误差椭圆参数等2.3.3误差方程的列立以未知点坐标为平差对象,一个观测值对应一个误差方程式,误差方程式包括两类:方向观测误差方程式和边长观测误差方程式(1)方向观测误差方程式计算m_pAngleObs中第i个的观测方向点近似坐标所有未知点的近似坐标是否已经推算出来近似坐标推算计算完毕LBXVminPVVT022)(PBVxVPVxPVVTTT0,0)(,0PLBPBXBLBXPBPVBTTTT0PLBPBXBTTPLBPBBXTT1)()/(tnPVVT一般形式:其中:一般取测站起始方向(零方向)的近似坐标方位角作为定向角近似值当测站点i为已知点时:当照准点j为已知点时:当侧站点和照准点都为已知点时:(2)边长观测误差方程式为近似坐标计算而得,为实测边长当测站点i为已知点时:当照准点j为已知点时:2.3.4定权(1)方向观测值的权在等精度方向观测的控制网中,一般把方向观测值的权定为1(2)边长观测值的权其中Ms由对话框输入2.3.5平差后的坐标值计算求得平差后的坐标值X=X+dX。因为只有dx很小时误差方程式、条件方程式才是严密的,因此当dX的值较大时应把X=X_+dX作为新的近似值重复上述步骤,直到dx中绝对值最大的一个小于给定的0.1mm(注意:这里只是指坐标改正值,不包括定向改正值,所以在求dx中绝对值最大值时,应除去定向改正值,否则会无限迭代计算,因为定向改正值很大,而且迭代计算时不会进行改正)。2.3.6精度评定(1)中误差计算:,n为观测值个数,t为未知数个数ijjijjijiijiijiijlYbXaYbXaZV00''00''cos,sinijijijijijijDTbDTaijijiijLTZl000iZ)(00000ijijijXXYYarctgTijjijjijiijlYbXaZVijiijiijiijlYbXaZVijiijlZVijjijjijiijiijijlYTXTYTXTV0000sincossincosijijijSSl00ijSijSijjijjijijlYTXTV00sincosijiijiijijlYTXTV00sincos22ssmptnPVVmT0(2)待定点点位误差:(3)误差椭圆元素计算:长半径方位角长半径、短半径2.3.7平差计算流程图:近似坐标矩阵B、L、P矩阵运算是否求得坐标作为近似坐标精度评定yyyxxxQmmQmm00,220yxkmmmmyyxxxyQQQarctgQ221)90(,000QtgQQmEtgQQQmExyxxxyxx近似坐标推算CalculateErrorEquations函数平差计算,将坐标改正数加到坐标上,并判断循环是否达到要求建立矩阵类Matrix对象,进行调用单位权中误差计算点位中误差计算误差椭圆参数计算2.3.8具体实现(1)voidComAngleObsEff(CAngleObsAngleObs,double&Fi,double&Ci,double&Di,double&Ck,double&Dk);,此函数功能为计算出AngleObs的系数Fi、Ci、Di、Ck;(2)voidComDistObsEff(CDistObsDistObs,double&Fi,double&Ci,double&Di,double&Ck,double&Dk);,此函数功能为计算出DistObs的系数Fi、Ci、Di、Ck;(3)voidFormErrorEquations(CMatrix&B,CMatrix&f),此函数功能为组建法方程系数矩阵B,常数项矩阵f;voidFixedWeight(CMatrix&p),此函数功能为计算权矩阵p;(4)voidFormErrorEquations(CMatrix&B,CMatrix&f),此函数功能为平差计算、点位精度计算.2.成果输出(1)平差结果的输出,主要是输出方向观测成果表、距离观测成果表、精度评定以及控制点成果表这四方面内容,对于这部分的输出比较容易实现,只要建立Cstring对象,调用库函数.format()来定义输出格式,来进行格式化输出,就很容易实现。在对话框对应的计算按钮添加代码部分获得文件名strFileName,调用voidCalculateErrorEquations(constCString&strFileName)。(2)图形绘制,对话框添加画图控件,在对话框对应的画图按钮添加代码获得picture控件的CDC和大小,调用控制网ControlNetAdjust中成员函数voidErrorEllipseDraw(CDC*pDC,CRe

1 / 50
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功