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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《测绘程序设计》

上机实验报告

(Visual C++.Net)

班级:测绘0901班

学号: 04

姓名:代娅琴

2012年4月29日

实验八平差程序设计基础

一、实验目的

巩固过程的定义与调用

巩固类的创建与使用

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

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

二、实验内容

水准网平差程序设计。设计一个水准网平差的程序,要求数据从文件中读取,计算部分与界面无关。

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

2.计算示例:

近似高程计算:

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

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

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

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

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

(5)组成法方程;

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

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

(8)精度评定;

(9)输出平差结果。

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

5.输入数据格式示例

实验代码:

#pragma once

class LevelControlPoint

{

public:

LevelControlPoint(void);

~LevelControlPoint(void);

public:

CString strName;trName=pstrData[0];

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

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

m_pKnownPoint[i].flag=1;trName=pstrData[i];

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

m_pUnknownPoint[i].H=0;lag=0;pBackObj=SearchPointUsingID(pstrData[0]);pFrontObj=SearchPointUsingI D(pstrData[1]);ObsValue=_tstof(pstrData[2]);ist=_tstof(pstrData[3]);trID==ID)

{return &m_pKnownPoint[i];}

}

return NULL;

}

trID==ID)

{return &m_pUnknownPoint[i];}

}

return NULL;

}

LevelControlPoint* AdjustLevel::SearchPointUsingID(CString ID)

{

LevelControlPoint* cp;

cp=SearchKnownPointUsingID(ID);

if(cp==NULL)

cp=SearchUnknownPointUsingID(ID);

return cp;

}

void AdjustLevel::ApproHeignt(void)lag!=1)

{

pFrontObj->strID==m_pUnknownPoint[i].strID)

&& m_pDhObs[j].cpBackObj->flag==1 )

{ =m_pDhObs[i].cpBackObj->H - m_pDhObs[i].ObsValue;*/

m_pUnknownPoint[i].H=m_pDhObs[j].cpBackObj->H + m_pDhObs[j].HObsValue;

m_pUnknownPoint[i].flag=1;

break;

}

}

if(m_pUnknownPoint[i].flag!=1)pBackObj->strID==m_pUnknownPoint[i].strID)

&& m_pDhObs[j].cpFrontObj->flag==1 )

{ =m_pDhObs[j].cpFrontObj->H-m_pDhObs[j].HObsValue;

/* m_pUnknownPoint[i].H=m_pDhObs[i].cpFrontObj->H+m_pDhObs[i].ObsValue;*/ m_pUnknownPoint[i].flag=1;

break;

}

}

}

}

if(i==m_iUnknownPointCount-1)lag!=1)ist);

p(i,i)=value;

}

return p;

}

void AdjustLevel::FormErrorEquation(CMatrix &B, CMatrix &L)

{

(m_iDhObsCount,m_iUnknownPointCount);

(m_iDhObsCount,1);

for(int i=0;istrID);

tmpFront=SearchPointUsingID(m_pDhObs[i].cpFrontObj->strID);

trID==tmpBack->strID)trID==tmpFront->strID)bsValue-(m_pDhObs[i].cpBackObj->H-m_pDhObs[i].cpFrontO bj->H);*/

L(i,0)=m_pDhObs[i].HObsValue-(m_pDhObs[i].cpFrontObj->H - m_pDhObs[i].cpBackObj->H);

(_T("%.3f"),L(i,0));

L(i,0)=_tstof(tmp);

L(i,0)=L(i,0)*1000;+=x(i,0);xt"));xt"));

if()==IDCANCEL) return;

CString strFileName=();

setlocale(LC_ALL,"");

CStdioFile sf;

if(!(strFileName, CFile::modeCreate|CFile::modeWrite)) return;

(LevleContent);

();

UpdateData(FALSE);

}

void CIndircLelveDlg::OnBnClickedComputelevel()

{

f\r\n"), [i].strID,[i].H);

LevleContent+=Temp;

}

(_T("单位权中误差:%.1f mm\r\n"),r0*1000);

LevleContent+=Temp;

LevleContent+=_T("未知点高程中误差(mm):\r\n");

相关文档
最新文档