好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

测绘程序设计—实验八-水准网平差程序设计报告.docx

18页
  • 卖家[上传人]:汽***
  • 文档编号:536587741
  • 上传时间:2022-10-03
  • 文档格式:DOCX
  • 文档大小:670.63KB
  • / 18 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 《测绘程序设计(VC.net)》上机试验报告(Visual C++.Net)班 级: 测绘0901班 学 号: 0405090204 姓 名: 代娅琴 2012年4月29日试验八 平差程序设计基础一、 试验目的• 巩固过程的定义与调用• 巩固类的创建与运用• 巩固间接平差模型及平差计算• 驾驭平差程序设计的基本技巧与步骤二、 试验内容水准网平差程序设计设计一个水准网平差的程序,要求数据从文件中读取,计算部分与界面无关1. 水准网间接平差模型:2. 计算示例:近似高程计算:3. 水准网平差计算一般步骤(1)读取观测数据和已知数据;(2)计算未知点高程近似值;(3)列高差观测值误差方程;(4)依据水准路途长度计算高差观测值的权;(5)组成法方程;(6)解法方程,求得未知点高程改正数及平差后高程值;(7)求高差观测值残差及平差后高差观测值;(8)精度评定;(9)输出平差结果4. 水准网高程近似值计算算法 5. 输入数据格式示例试验代码:#pragma onceclass LevelControlPoint{public: LevelControlPoint(void); ~LevelControlPoint(void);public: CString strName;//点名 CString strID;//点号 float H; bool flag;//标记是否已经计算出近似高程值,若计算出则为,否则为};class CDhObs{public: CDhObs(void); ~CDhObs(void);public: LevelControlPoint* cpBackObj;//后视点 LevelControlPoint* cpFrontObj;//前视点 double ObsValue;//高差值 double Dist;//测站的距离};#include "StdAfx.h"#include "LevelControlPoint.h"LevelControlPoint::LevelControlPoint(void){ strName=_T(""); strID=_T(""); H=0; flag=0;}LevelControlPoint::~LevelControlPoint(void){}CDhObs::CDhObs(void){}CDhObs::~CDhObs(void){}#pragma once#include"LevelControlPoint.h"#include "Matrix.h"class AdjustLevel{public: AdjustLevel(void); ~AdjustLevel(void);public: LevelControlPoint* m_pKnownPoint;//已知点数组 int m_iKnownPointCount;//已知点个数 LevelControlPoint* 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);//读入观测文件 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);//计算权矩阵 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.h"AdjustLevel::AdjustLevel(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_pUnknownPoint; m_pUnknownPoint=NULL; } if(m_pDhObs!=NULL) { delete[] m_pDhObs; m_pDhObs=NULL; }}void AdjustLevel::SetKnownPointSize(int size){ m_pKnownPoint=new LevelControlPoint[size];//创建动态指针 m_iKnownPointCount=size;}void AdjustLevel::SetUnkonwnPointSize(int size){ m_pUnknownPoint=new LevelControlPoint[size]; m_iUnknownPointCount=size;}void AdjustLevel::SetDhObsSize(int size){ m_pDhObs=new CDhObs[size]; 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);//读取第一行,即已知点的数目 SetKnownPointSize(_ttoi(strLine));//依据已知点的数目,创建已知点数组; int n=0; for(int i=0;i

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.