测绘程序的设计—实验八_水准网平差程序的设计报告

上传人:xmg****18 文档编号:118848999 上传时间:2019-12-27 格式:DOC 页数:19 大小:259.50KB
返回 下载 相关 举报
测绘程序的设计—实验八_水准网平差程序的设计报告_第1页
第1页 / 共19页
测绘程序的设计—实验八_水准网平差程序的设计报告_第2页
第2页 / 共19页
测绘程序的设计—实验八_水准网平差程序的设计报告_第3页
第3页 / 共19页
测绘程序的设计—实验八_水准网平差程序的设计报告_第4页
第4页 / 共19页
测绘程序的设计—实验八_水准网平差程序的设计报告_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《测绘程序的设计—实验八_水准网平差程序的设计报告》由会员分享,可在线阅读,更多相关《测绘程序的设计—实验八_水准网平差程序的设计报告(19页珍藏版)》请在金锄头文库上搜索。

1、word格式误差理论与测量平差基础课程设计(VC.net)实习报告(Visual C+.Net)班 级: 学 号: 姓 名: 2014年2月17日至2月28日 水准网平差程序设计 一、 实验目的 巩固过程的定义与调用 巩固类的创建与使用 巩固间接平差模型及平差计算 掌握平差程序设计的基本技巧与步骤二、 实验内容水准网平差程序设计。设计一个水准网平差的程序,要求数据从文件中读取,计算部分与界面无关。1. 水准网间接平差模型:2. 计算示例:近似高程计算:3. 水准网平差计算一般步骤(1)读取观测数据和已知数据;(2)计算未知点高程近似值;(3)列高差观测值误差方程;(4)根据水准路线长度计算高差

2、观测值的权;(5)组成法方程;(6)解法方程,求得未知点高程改正数及平差后高程值;(7)求高差观测值残差及平差后高差观测值;(8)精度评定;(9)输出平差结果。4. 水准网高程近似值计算算法 5. 输入数据格式示例3 已知点数A,151.5664B,144.5684 已知点号及高程C,144.31949 未知数P1,P2,P3,P4,P5,P6,P7,P8,P9 未知点号15 高差观测数据个数B,P4,1.4966,0.4B,P1,1.7881,0.5P1,A,5.2065,0.7P4,P2,2.0850,0.9P2,A,3.4175,0.4C,P3,1.2081,1.0P3,A,6.0372

3、,0.6C,P5,4.3306,0.7 高差观测数据:起点,终点,高差,路线长度P6,P5,3.6513,0.6P7,P6,2.5122,0.3 P7,P9,2.0415,0.8P9,P4,1.5366,0.7C,P4,1.7450,0.8P8,P5,2.7436,0.4P9,P8,1.3783,0,5实验代码:#pragma onceclass LevelControlPointpublic:LevelControlPoint(void);LevelControlPoint(void);public:CString strName;/点名CString strID;/点号float H;bo

4、ol flag;/标记是否已经计算出近似高程值,若计算出则为,否则为;class CDhObspublic:CDhObs(void);CDhObs(void);public:LevelControlPoint* cpBackObj;/后视点LevelControlPoint* cpFrontObj;/前视点double ObsValue;/高差值double Dist;/测站的距离;#include StdAfx.h#include LevelControlPoint.hLevelControlPoint:LevelControlPoint(void)strName=_T();strID=_T

5、();H=0;flag=0;LevelControlPoint:LevelControlPoint(void)CDhObs:CDhObs(void)CDhObs:CDhObs(void)#pragma once#includeLevelControlPoint.h#include Matrix.hclass AdjustLevelpublic:AdjustLevel(void);AdjustLevel(void);public:LevelControlPoint* m_pKnownPoint;/已知点数组int m_iKnownPointCount;/已知点个数LevelControlPoin

6、t* m_pUnknownPoint;/未知点数组int m_iUnknownPointCount;/未知点个数CDhObs* m_pDhObs;/高差观测值数组int m_iDhObsCount;/高差观测值个数public:void SetKnownPointSize(int size);/创建大小为size的已知点数组void SetUnkonwnPointSize(int size);/创建大小为size的未知点数组void SetDhObsSize(int size);/创建大小为size的观测值数组bool LoadObsData(const CString& strFile);/

7、读入观测文件CString* SplitString(CString str, char split, int& iSubStrs); void ApproHeignt(void);/计算近似值private:LevelControlPoint* SearchKnownPointUsingID(CString ID);LevelControlPoint* SearchUnknownPointUsingID(CString ID);LevelControlPoint* SearchPointUsingID(CString ID); CMatrix LevleWeight(void);/计算权矩阵

8、public:void FormErrorEquation(CMatrix &B, CMatrix &L);/组成误差方程 void EquationCompute(CMatrix &x);/计算法方程void Accuracy_Assessment(double &r0,CMatrix &Qxx);/精度评定void CompAdjust(double &r0,CMatrix Qx);#include StdAfx.h#include AdjustLevel.h#include #include LevelControlPoint.h#include math.hAdjustLevel:Ad

9、justLevel(void)m_pKnownPoint=NULL;/已知点数组m_iKnownPointCount=0;/已知点个数m_pUnknownPoint=NULL;/未知点数组m_iUnknownPointCount=0;/未知点个数m_pDhObs=NULL;/高差观测值数组m_iDhObsCount=0;/高差观测值个数AdjustLevel:AdjustLevel(void)if(m_pKnownPoint!=NULL)delete m_pKnownPoint;m_pKnownPoint=NULL;if(m_pUnknownPoint!=NULL)delete m_pUnkn

10、ownPoint;m_pUnknownPoint=NULL;if(m_pDhObs!=NULL)delete m_pDhObs;m_pDhObs=NULL;void AdjustLevel:SetKnownPointSize(int size)m_pKnownPoint=new LevelControlPointsize;/创建动态指针m_iKnownPointCount=size;void AdjustLevel:SetUnkonwnPointSize(int size)m_pUnknownPoint=new LevelControlPointsize;m_iUnknownPointCoun

11、t=size;void AdjustLevel:SetDhObsSize(int size)m_pDhObs=new CDhObssize;m_iDhObsCount=size;/高差观测值个数bool AdjustLevel:LoadObsData(const CString& strFile)CStdioFile sf;if(!sf.Open(strFile,CFile:modeRead) return false;/创建并打开文件对象CString strLine;bool bEOF=sf.ReadString(strLine);/读取第一行,即已知点的数目SetKnownPointSi

12、ze(_ttoi(strLine);/根据已知点的数目,创建已知点数组;int n=0;for(int i=0;im_iKnownPointCount;i+)/读取已知点的点名和高程值sf.ReadString(strLine);CString *pstrData=SplitString(strLine,n);m_pKnownPointi.strName=pstrData0;m_pKnownPointi.strID=pstrData0;m_pKnownPointi.H=_tstof(pstrData1);m_pKnownPointi.flag=1;/已知点不用平差,故将其的flag设置为del

13、ete pstrData;pstrData=NULL;sf.ReadString(strLine);/读取未知点的个数SetUnkonwnPointSize(_ttoi(strLine);/根据未知点的个数创建未知点数组sf.ReadString(strLine);/读取未知点的点名CString *pstrData=SplitString(strLine,n);for(int i=0;im_iUnknownPointCount;i+)/将未知点的点名放入未知点数组m_pUnknownPointi.strName=pstrDatai;m_pUnknownPointi.strID=pstrDatai;m_pUnknownPointi.H=0;/未知点的高程值设置为m_pUnknownPointi.flag=0;/还没有求得近似高程,故其flag设置为if(pstrData!=NULL)delete pstrData;pstrData=NULL;sf.ReadString(strLine);/读取观测值的个数SetDhObsSize(_ttoi(strLine);/按照观测值的大小,创建观测

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

当前位置:首页 > 大杂烩/其它

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