当前位置:
文档之家› 测绘程序设计—实验八水准网平差程序设计报告
测绘程序设计—实验八水准网平差程序设计报告
姓 名:代娅琴
2012年4月29日
实验八平差程序设计基础
一、实验目的
•巩固过程的定义与调用
•巩固类的创建与使用
•巩固间接平差模型及平差计算
•掌握平差程序设计的基本技巧与步骤
二、实验内容
水准网平差程序设计。设计一个水准网平差的程序,要求数据从文件中读取,
计算部分与界面无关。
1.水准网间接平差模型:
2.计算示例:
ﻩvoidCompAdjust(double&r0,CMatrix Qx[]);
};
#include"StdAfx.h"
#include"AdjustLevel.h"
#include<locale.h>
#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;//高差观测值个数
4.水准网高程近似值计算算法
5.输入数据格式示例
实验代码:
#pragmaonce
classLevelControlPoint
{
public:
LevelControlPoint(void);
ﻩ
ﻩ~LevelControlPoint(void);
public:
ﻩCString strName;//点名
CString strID;//点号
private:
LevelControlPoint* SearchKnownPointUsingID(CString ID);
ﻩLevelControlPoint* SearchUnknownPointUsingID(CString ID);
LevelControlPoint* SearchPointUsingID(CString ID);
ﻩH=0;
ﻩflag=0;
}
LevelControlPoint::~LevelControlPoint(void)
{
}
CDhObs::CDhObs(void)
{
}
CDhObs::~CDhObs(void)
{
}
#pragmaonce
#include"LevelControlPoint.h"
#include"Matrix.h"
}
AdjustLevel::~AdjustLevel(void)
{
ﻩif(m_pKnownPoint!=NULL)
ﻩ{
ﻩﻩdelete[] m_pKnownPoint;
ﻩm_pKnownPoint=NULL;
ﻩ}
ﻩif(m_pUnknownPoint!=NULL)
ﻩ{
ﻩvoidSetDhObsSize(intsize);//创建大小为size的观测值数组
ﻩboolLoadObsData(constCString& str读入观测文件
CString* SplitString(CString str,charsplit,int& iSubStrs);
voidApproHeignt(void);//计算近似值
测绘程序设计—实验八-水准网平差程序设计报告
———————————————————————————————— 作者:
———————————————————————————————— 日期:
ﻩ
《测绘程序设计()》
上机实验报告
(Visual C++.Net)
班 级:测绘0901班
学 号:0405090204
intm_iUnknownPointCount;//未知点个数
CDhObs* m_pDhObs;//高差观测值数组
intm_iDhObsCownPointSize(intsize);//创建大小为size的已知点数组
voidSetUnkonwnPointSize(intsize);//创建大小为size的未知点数组
近似高程计算:
3.水准网平差计算一般步骤
(1)读取观测数据和已知数据;
(2)计算未知点高程近似值;
(3)列高差观测值误差方程;
(4)根据水准路线长度计算高差观测值的权;
(5)组成法方程;
(6)解法方程,求得未知点高程改正数及平差后高程值;
(7)求高差观测值残差及平差后高差观测值;
(8)精度评定;
(9)输出平差结果。
classAdjustLevel
{
public:
AdjustLevel(void);
~AdjustLevel(void);
public:
ﻩLevelControlPoint* m_pKnownPoint;//已知点数组
ﻩintm_iKnownPointCount;//已知点个数
LevelControlPoint* m_pUnknownPoint;//未知点数组
doubleObsValue;//高差值
doubleDist;//测站的距离
};
#include"StdAfx.h"
#include"LevelControlPoint.h"
LevelControlPoint::LevelControlPoint(void)
{
ﻩstrName=_T("");
ﻩstrID=_T("");
floatH;
boolflag;//标记是否已经计算出近似高程值,若计算出则为,否则为
};
classCDhObs
{
public:
ﻩCDhObs(void);
~CDhObs(void);
public:
LevelControlPoint* cpBackObj;//后视点
LevelControlPoint* cpFrontObj;//前视点
CMatrix LevleWeight(void);//计算权矩阵
public:
voidFormErrorEquation(CMatrix &B, CMatrix &L);//组成误差方程
voidEquationCompute(CMatrix &x);//计算法方程
ﻩvoidAccuracy_Assessment(double&r0,CMatrix &Qxx);//精度评定