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

上传人:b****3 文档编号:2151507 上传时间:2022-10-27 格式:DOCX 页数:24 大小:190.84KB
下载 相关 举报
测绘程序设计实验八水准网平差程序设计报告.docx_第1页
第1页 / 共24页
测绘程序设计实验八水准网平差程序设计报告.docx_第2页
第2页 / 共24页
测绘程序设计实验八水准网平差程序设计报告.docx_第3页
第3页 / 共24页
测绘程序设计实验八水准网平差程序设计报告.docx_第4页
第4页 / 共24页
测绘程序设计实验八水准网平差程序设计报告.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

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

《测绘程序设计实验八水准网平差程序设计报告.docx》由会员分享,可在线阅读,更多相关《测绘程序设计实验八水准网平差程序设计报告.docx(24页珍藏版)》请在冰豆网上搜索。

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

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

《误差理论与测量平差基础课程设计(VC.net)》

实习报告

(VisualC++.Net)

 

班级:

学号:

姓名:

2014年2月17日至2月28日

 

水准网平差程序设计

一、实验目的

•巩固过程的定义与调用

•巩固类的创建与使用

•巩固间接平差模型及平差计算

•掌握平差程序设计的基本技巧与步骤

二、实验内容

水准网平差程序设计。

设计一个水准网平差的程序,要求数据从文件中读取,

计算部分与界面无关。

1.水准网间接平差模型:

2.计算示例:

近似高程计算:

3.水准网平差计算一般步骤

(1)读取观测数据和已知数据;

(2)计算未知点高程近似值;

(3)列高差观测值误差方程;

(4)根据水准路线长度计算高差观测值的权;

(5)组成法方程;

(6)解法方程,求得未知点高程改正数及平差后高程值;

(7)求高差观测值残差及平差后高差观测值;

(8)精度评定;

(9)输出平差结果。

4.水准网高程近似值计算算法

5.输入数据格式示例

3已知点数

A,151。

5664

B,144。

5684已知点号及高程

C,144。

3194

9未知数

P1,P2,P3,P4,P5,P6,P7,P8,P9未知点号

15高差观测数据个数

B,P4,1。

4966,0。

4

B,P1,1。

7881,0。

5

P1,A,5。

2065,0。

7

P4,P2,2.0850,0。

9

P2,A,3。

4175,0.4

C,P3,1。

2081,1.0

P3,A,6.0372,0。

6

C,P5,4。

3306,0。

7高差观测数据:

起点,终点,高差,路线长度

P6,P5,3.6513,0。

6

P7,P6,2.5122,0。

3

P7,P9,2.0415,0。

8

P9,P4,1.5366,0.7

C,P4,1.7450,0.8

P8,P5,2.7436,0.4

P9,P8,1。

3783,0,5

 

实验代码:

#pragmaonce

classLevelControlPoint

public:

LevelControlPoint(void);

~LevelControlPoint(void);

public:

CStringstrName;//点名

CStringstrID;//点号

floatH;

boolflag;//标记是否已经计算出近似高程值,若计算出则为,否则为

};

classCDhObs

public:

CDhObs(void);

~CDhObs(void);

public:

LevelControlPoint*cpBackObj;//后视点

LevelControlPoint*cpFrontObj;//前视点

doubleObsValue;//高差值

doubleDist;//测站的距离

};

#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)

#pragmaonce

#include"LevelControlPoint.h"

#include”Matrix.h"

classAdjustLevel

public:

AdjustLevel(void);

~AdjustLevel(void);

public:

LevelControlPoint*m_pKnownPoint;//已知点数组

intm_iKnownPointCount;//已知点个数

LevelControlPoint*m_pUnknownPoint;//未知点数组

intm_iUnknownPointCount;//未知点个数

CDhObs*m_pDhObs;//高差观测值数组

intm_iDhObsCount;//高差观测值个数

public:

voidSetKnownPointSize(intsize);//创建大小为size的已知点数组

voidSetUnkonwnPointSize(intsize);//创建大小为size的未知点数组

voidSetDhObsSize(intsize);//创建大小为size的观测值数组

boolLoadObsData(constCString&strFile);//读入观测文件

CString*SplitString(CStringstr,charsplit,int&iSubStrs);

voidApproHeignt(void);//计算近似值

private:

LevelControlPoint*SearchKnownPointUsingID(CStringID);

LevelControlPoint*SearchUnknownPointUsingID(CStringID);

LevelControlPoint*SearchPointUsingID(CStringID);

CMatrixLevleWeight(void);//计算权矩阵

public:

voidFormErrorEquation(CMatrix&B,CMatrix&L);//组成误差方程

voidEquationCompute(CMatrix&x);//计算法方程

voidAccuracy_Assessment(double&r0,CMatrix&Qxx);//精度评定

voidCompAdjust(double&r0,CMatrixQx[]);

};

#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;//高差观测值个数

}

 

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;

}

}

 

voidAdjustLevel:

:

SetKnownPointSize(intsize)

{

m_pKnownPoint=newLevelControlPoint[size];//创建动态指针

m_iKnownPointCount=size;

 

voidAdjustLevel:

SetUnkonwnPointSize(intsize)

{

m_pUnknownPoint=newLevelControlPoint[size];

m_iUnknownPointCount=size;

}

 

voidAdjustLevel:

SetDhObsSize(intsize)

{

m_pDhObs=newCDhObs[size];

m_iDhObsCount=size;//高差观测值个数

 

boolAdjustLevel:

:

LoadObsData(constCString&strFile)

{

CStdioFilesf;

if(!

sf.Open(strFile,CFile:

:

modeRead))returnfalse;//创建并打开文件对象

CStringstrLine;

boolbEOF=sf。

ReadString(strLine);//读取第一行,即已知点的数目

SetKnownPointSize(_ttoi(strLine));//根据已知点的数目,创建已知点数组;

intn=0;

for(inti=0;i〈m_iKnownPointCount;i++)//读取已知点的点名和高程值

{

sf。

ReadString(strLine);

CString*pstrData=SplitString(strLine,',',n);

m_pKnownPoint[i]。

strName=pstrData[0];

m_pKnownPoint[i].strID=pstrData[0];

m_pKnownPoint[i].H=_tstof(pstrData[1]);

m_pKnownPoint[i].flag=1;//已知点不用平差,故将其的flag设置为

delete[]pstrData;

pstrData=NULL;

sf。

ReadString(strLine);//读取未知点的个数

SetUnkonwnPointSize(_ttoi(strLine));//根据未知点的个数创建未知点数组

sf.ReadString(strLine);//读取未知点的点名

CString*pstrData=SplitString(strLine,’,’,n);

for(inti=0;i〈m_iUnknownPointCount;i++)//将未知点的点名放入未知点数组

m_pUnknownPoint[i].strName=pstrData[i];

m_pUnknownPoint[i]。

strID=pstrData[i];

m_pUnknownPoint[i]。

H=0;//未知点的高程值设置为

m_pUnknownPoint[i]。

flag=0;//还没有求得近似高程,故其flag设置为

}

if(pstrData!

=NULL)

{

delete[]pstrData;

pstrData=NULL;

}

sf.ReadString(strLine);//读取观测值的个数

SetDhObsSize(_ttoi(strLine));//按照观测值的大小,创建观测值数组

for(inti=0;i

{

sf.ReadString(strLine);

CString*pstrData=S

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 职业规划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1