- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
测绘程序设计(VS2008)实验报告--水准网平差程
《测绘程序设计(VC.net)》
上机实验报告
(Visual C++.Net)
班 级:
学 号:
姓 名:
序 号:
二零一一年五月
实验8 平差程序设计基础
实验目的:
巩固过程的定义与调用;
巩固类的创建于使用;
巩固间接平差模型与平差计算;
掌握平差程序设计的基本技巧与步骤。
实验内容:
水准网平差程序设计。设计一个水准网平差的程序,要求数据从文件中读取。
计算部分也界面无关。
设计思路:
在本次的实验中,我着重想表现的是一种面向对象的编程思想。于是,在程序中我设计了4个类:CPoint、CObserve、CMatrix、Leveling,分别定义点的属性、观测数据属性、矩阵和水准网平差计算的属性与方法。
水准网平差计算一般步骤为:
(1)读取观测数据和已知数据;
(2)计算未知点高程近似值;
(3)列高差观测值误差方程;
(4)根据水准路线长度计算高差观测值的权;
(5)组成法方程;
(6)解法方程,求得未知点高程改正数及平差后高程值;
(7)求高差观测值残差及平差后高差观测值;
(8)精度评定;
(9)输出平差结果。
水准网高程近似值计算算法
界面设计:
仅添加了一个button按钮,单击后读取数据,并进行水准网平差计算,计算结果保存在记事本中
主要代码:
文件一: CPoint.h
代码:
class ControlPoint
{
public:
ControlPoint(void){};
~ControlPoint(void){};
public:
CString pointID; //点号
double H; //高程
};
class CObserve
{
public:
CObserve(void){};
~CObserve(void){};
public:
ControlPoint *pStartObs; //后视点
ControlPoint *pEndObs; //前视点
double h; //路线长度
double dDist; //高差
};
文件二:Leveling.h
代码:
#pragma once
#include CPoint.h
#include Matrix.h
class Leveling
{
public:
Leveling(void);
~Leveling(void);
private:
ControlPoint *m_pKnownPoint; //已知点数组
int m_iKnownPointCount; //已知点个数
ControlPoint *m_pUnknownPoint; //待测点数组
int m_iUnknownPointCount; //待测点个数
CObserve *m_pObsData; //观测数据数组
int m_iObsDataCount; //观测数据个数
public:
bool LoadData(const CString FileName); //从文件中导入数据
void OutMatrixToFile(const CMatrix mat,CStdioFile SF); //把矩阵输出到文件中
void SetKownPointSize(int n); //设置已知点数据大小
void SetUnknownPointSize(int n);
void SetObsDataSize(int n);
CString* SplitString(CString str , char split, int iSubStrs); //分割字符串
public:
//根据点号从已知点数组中找到控制点,并返回该点的指针
ControlPoint* SearchKnownPointUsingID(CString pointID);
//根据点号从未知点数组中找到控制点,并返回该点的指针
ControlPoint* SearchUnknownPointUsingID(CString pointID);
//根据点号从未知点和已知点数组中找到控制点,并返回该点的指针
ControlPoint* SearchPointUsingID(CString pointID);
void ComputeApproximateH(void); //求待测点高差近似值
public:
//组成误差方程,B 为系数矩阵,f为常数项向量
void FormErrorEquations
文档评论(0)