测绘程序设计—实验八 水准网平差程序设计报告.doc
文本预览下载声明
《测绘程序设计(VC.net)》
上机实验报告
(Visual C++.Net)
班 级: 测绘0901班
学 号: 0405090204
姓 名: 代娅琴
2012年4月29日
实验八 平差程序设计基础
实验目的
? 巩固过程的定义与调用
? 巩固类的创建与使用
? 巩固间接平差模型及平差计算
? 掌握平差程序设计的基本技巧与步骤
实验内容
水准网平差程序设计。设计一个水准网平差的程序,要求数据从文件中读取,
计算部分与界面无关。
水准网间接平差模型:
计算示例:
近似高程计算:
水准网平差计算一般步骤
(1)读取观测数据和已知数据;
(2)计算未知点高程近似值;
(3)列高差观测值误差方程;
(4)根据水准路线长度计算高差观测值的权;
(5)组成法方程;
(6)解法方程,求得未知点高程改正数及平差后高程值;
(7)求高差观测值残差及平差后高差观测值;
(8)精度评定;
(9)输出平差结果。
水准网高程近似值计算算法
输入数据格式示例
实验代码:
#pragma once
class 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
#includeLevelControlPoint.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(CMatr
显示全部