当前位置:文档之家› 水准网间接平差程序设计(C++)

水准网间接平差程序设计(C++)

水准网间接平差程序设计(C++)
水准网间接平差程序设计(C++)

////////////////////////////////////////////////////

// visual C++6.0 编译通过//

////////////////////////////////////////////////////

///////////////////////////////////////////////////

// 参考资料//

// 部分网络资料//

// 宋力杰《测量平差程序设计》//

//姚连壁《基于matlab的控制网平差程序设计》//

///////////////////////////////////////////////////

#include

#include

#include

#include

#include

using namespace std;

//////////////////////////////////////////////////////////////////////////c lass

class SZWPC

{

private:

int gcz_zs; //高差总数

int szd_zs; //总点数

int yz_szd_zs; //已知点数

double m_pvv; //[pvv]

int *qsd_dh; //高差起点号

int *zd_dh; //高差终点号

char **dm; //点名地址数组

double *gcz; //观测值数组

double *szd_gc; //高程值数组

double *P; //观测值的权

double *ATPA,*ATPL; //法方程系数矩阵与自由项

double *dX; //高程改正数、平差值

double *V; //残差

double m_mu; //单位权中误差

public:

SZWPC();

~SZWPC();

int ij(int i,int j);//对称矩阵下标计算函数

bool inverse(double a[],int n);//对称正定矩阵求逆(仅存下三角元素)(参考他人)void inputdata(char *datafile);//输入原始数据函数

int dm_dh(char *name); //点名转点号

void ca_H0(); //近似高程计算函数

void ca_ATPA(); //法方程组成函数

void ca_dX(); //高程平差值计算函数

void printresult(char *resultfile); //精度估计与平差值输出函数

double ca_V(); //残差计算函数

void zxecpc(char *resultfile);//最小二乘平差函数

};

////////////////////////////////////////////////////////////////////// // 构造函数

SZWPC::SZWPC()

{

gcz_zs=0;

szd_zs=0;

yz_szd_zs=0;

}

////////////////////////////////////////////////////////////////////// // 析构函数

SZWPC::~SZWPC()

{

if(gcz_zs>0)

{

delete []qsd_dh;

delete []zd_dh;

delete []gcz;

delete []P;

delete []V;

}

if(szd_zs>0)

{

delete []szd_gc;

delete []ATPA;

delete []ATPL;

delete []dX;

for(int i=0; i

if(dm[i]!=NULL)delete[](dm[i]);

delete []dm;

}

}

////////////////////////////////////////////////////////////////////////// // 对称矩阵下标计算函数

int SZWPC::ij(int i,int j)

{

return (i>=j)? i*(i+1)/2+j :j*(j+1)/2+i;

}

////////////////////////////////////////////////////////////////////////// // 对称正定矩阵求逆(仅存下三角元素)(参考他人)

bool SZWPC::inverse(double a[],int n)

{

double *a0=new double[n];

for(int k=0;k

{

double a00=a[0];

if(a00+1.0==1.0)

{

delete []a0;

return false;

}

for(int i=1;i

{

double ai0 = a[i*(i+1)/2];

if(i<=n-k-1)a0[i]= -ai0/a00;

else a0[i]= ai0/a00;

for(int j=1;j<=i;j++)

{

a[(i-1)*i/2+j-1]=a[i*(i+1)/2+j]+ai0*a0[j];

}

}

for(i=1;i

{

a[(n-1)*n/2+i-1]=a0[i];

}

a[n*(n+1)/2-1]=1.0/a00;

delete []a0;

return true;

}

///////////////////////////////////////////////////////////////////////

原始数据输入函数

void SZWPC::inputdata(char *datafile)

{

ifstream infile(datafile,ios::in);

if(! infile)

{

cerr<<" Open error!"<

}

infile>>gcz_zs>>szd_zs>>yz_szd_zs;

int unPnumber=szd_zs-yz_szd_zs;

szd_gc=new double [szd_zs];

dX=new double [szd_zs];

ATPA=new double [szd_zs*(szd_zs+1)/2];

ATPL=new double [szd_zs];

qsd_dh=new int [gcz_zs];

zd_dh=new int [gcz_zs];

gcz=new double [gcz_zs];

V=new double [gcz_zs];

P=new double [gcz_zs];

dm=new char* [szd_zs];

for(int i=0;i

{

dm[i] = NULL;// dm_dh函数根据dm[i]是否为NULL确定dm[i]是否为点名地址}

char buffer[128]; //临时数组,保存从文件中读到的点名

for( i=0;i<=yz_szd_zs-1;i++)// 读取已知高程数据

{

infile>>buffer;

int c=dm_dh(buffer);

infile>>szd_gc[i];

}

for(i=0;i

infile>>buffer; //读取高程起点名

qsd_dh[i]=dm_dh(buffer);

infile>>buffer;//读取高程终点

zd_dh[i]=dm_dh(buffer);

infile>>gcz[i]>>P[i]; //读取高差值与路线长度

P[i]=1.0/P[i];//线路长转化为观测值的权

}

infile.close();

}

//////////////////////////////////////////////////////////////////// 点名转点号,返回点名对应的点号

int SZWPC::dm_dh(char *name)

{

for(int i=0; i

{

if(dm[i]!=NULL)

{

if(strcmp(name,dm[i])==0)return i;//将待查点名与已经存入点名数组的点名比较,若存在返回点号

}

else

{

int len = strlen(name);//判断点名长度

dm[i] = new char[len+1];//为点名申请存储空间

strcpy(dm[i], name);//待查点名是一个新的点名,将新点名的地址放到dm 数组中

return i;//返回点号

}

}

return -1; //dm数组已经存满,且没有待查点名

}

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

《测绘程序设计(https://www.doczj.com/doc/4d7747334.html,)》 上机实验报告 (Visual C++.Net) 班级:测绘0901班 学号:0405090204 姓名:代娅琴 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;//点名 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) {

水准网按条件平差算例

在图 表9-1 试求: (1)1P 、2P 及3P 点高程之最或然值; (2)1P 、2P 点间平差后高差的中误差。 解:(1)列条件方程式,不符值以“mm ”为单位。 已知3,7==t n ,故437=-=r ,其条件方程式为 ??? ? ???=--+=-+--=-+--=++-01030707742643765521v v v v v v v v v v v v (2)列函数式: 555v h x F +== 故 15=f 0764321======f f f f f f (3)组成法方程式。 1)令每公里观测高差的权为1,按1/i i s p =,将条件方程系数及其与权倒数之乘积填于表9-2中。 2)由表9-2数字计算法方程系数,并组成法方程式:

????????????----------5221251021411013????????????d c b a k k k k +????? ???????---1377=0 表9-2 条件方程系数表 (4)法方程式的解算。 1)解算法方程式在表9-3中进行。 2)[]pvv 计算之检核。 [][]wk pvv -= []467.35=-wk 由表9-3中解得[]47.35-=pvv ,两者完全一致,证明表中解算无误。 (5)计算观测值改正数及平差值见表9-4。 (6)计算321,,P P P 点高程最或然值。 359.3611=+=x H H A P m 012.3722=+=x H H A P m

表9-4 改正数与平差值计算表 (7)精度评定。 1)单位权(每公里观测高差)中误差 2)21,P P 点间平差后高差中误差 mm 0.34 47.35±=±=μmm P m F F 2.252.00.31 ±=±=±=μ

误差理论及测量平差课程设计报告

- - - n 目录 一、目录----------------------------1 二、序言---------------------------- 2 三、设计思路------------------------ 3 四、程序流程图---------------------- 4 五、程序及说明---------------------- 5 六、计算结果-----------------------12 七、总结--------------------------- 15 第二部分序言 1、课程设计的性质、目的和任务 误差理论与测量平差是一门理论与实践并重的课程,其课程设计是测量数据处理理论学习的一个重要的实践环节,它是在我们学习了专业基础课“误差理论与测量平差基础”课程后进行的一门实践课程。其目的是增强我们对误差理论与测量平差基础理论的理解,牢固掌握测量平差的基本原理和基本公式,熟悉测量数据处理的基本技能和计算方法,灵活准确地应用于解决各类数据处理的实际问题,并能用所学的计算机理论知识,编制简单的计算程序。 2、误差理论与测量平差课程和其它课程的联系和分工 这次课程设计中所用的数学模型和计算方法是我们在误差理论与测量平差课程中所学的内容,所使用的C程序语言使我们在计算机基础课程中所学知识。误差理论与测量平差课程设计是测量平差和计算机程序设计等课程的综合实践与应用,同时也为我们今后步入工作岗位打下了一定基础。 3、课程设计重点及内容 本次课程设计重点是培养我们正确应用公式、综合分析和解决问题的能力,以及计算机编程能力。另外它要求我们完成1-2个综合性的结合生产实践的题目。如目前生产实践中经常用到的水准网严密平差及精度评定,边角网(导线)严密平差及精度评定等。此次我所选的课程设计课题是水准网严密平差及精度评定,其具体内容如下: 根据题目要求,正确应用平差模型列出观测值条件方程、误差方程和法方程;解算法方程,得出平差后的平差值及各待定点的高程平差值;评定各平差值的精度和各高程平差值的精度。 具体算例为: 如图所示水准网,有2个已知点,3个未知点,7个测段。各已知数据及观测值见下表(1)已知点高程H1=5.016m ,H2=6.016m (2)高差观测值(m)

水准网平差(VB代码)

(误差理论与测量平差础) 课程设计报告 系(部):土木工程系 实习单位:山东交通学院 班级:测绘084 学生姓名:田忠星学号080712420 带队教师:夏小裕﹑周宝兴 时间:10 年12 月13日到10 年12 月19日 山东交通学院

目录: 1.摘要P3 2.概述P3 3.水准网间接平差程序设计思路P3—P4 4. 平差程序流程图P4—P6 5. 程序源代码及说明P7—P23 6. 计算结果P23—P26 7. 总结P26—P27

一:摘要 在测量工作中,为了能及时发现错误和提高测量成果的精度,常作多余观测,这就产生了平差问题。在一个平差问题中,当所选的独立参数X?的个数等于必要观测数t时,可将每个观测值表达成这t个参数的函数,组成观测方程,这种以观测方程为函数模型的平差方法,就是间接平差。 二:概述: 该课程设计的主要目是对水准网进行间接平差,在输入数据后依次计算高程近似值﹑误差方程和平差计算。 三:水准网间接平差程序设计思路 1.根据平差问题的性质,选择t个独立量(既未知点的高程)作为参数X? 2. 将每一个观测量的平差值(既观测的高程差值)分别表达成 3.由误差方程系数B和自由项组成法方程,法方程个数等于参数的个数t ; 4. 解算法方程,求出参数X?,计算参数(高程)的平差值 X?=X0 +x?; 5.由误差方程计算V,求出观测量(高差)平差值6.评定精度 单位权中误差 V L L+ = ∧ V L L+ = ∧

平差值函数的中误差 四:平差程序流程图 1. 已知数据的输入 需要输入的数据包括水准网中已知点数﹑未知点数以及这些点的点号,已知高程和高差观测值﹑距离观测值。程序采用文件方式进行输入,约定文件输入的格式如下: 第一行:已知点数﹑未知点数﹑观测值个数 第二行:点号(已知点在前,未知点在后) 第三行:已知高程(顺序与上一行的点号对应) 第四行:高差观测值,按“起点点号,终点点号。高差观测值,距离观测值”的顺序输入。 本节中使用的算例的数据格式如下 2,3,7 1,2,3,4,5 5.016,6.016 1,3,1.359,1.1 1,4,2.009,1.7 2,3,0.363,2.3 ,?20s u n PV V r PV V T T +-==σ. ???0????σσQ =

水准网间接平差程序设计(C++)

//////////////////////////////////////////////////// // visual C++6.0 编译通过 // //////////////////////////////////////////////////// /////////////////////////////////////////////////// // 参考资料 // // 部分网络资料 // // 宋力杰《测量平差程序设计》 // //连壁《基于matlab的控制网平差程序设计》 // /////////////////////////////////////////////////// #include #include #include #include #include using namespace std; //////////////////////////////////////////////////////////////////////////class class SZWPC { private: int gcz_zs; //高差总数 int szd_zs; //总点数 int yz_szd_zs; //已知点数 double m_pvv; //[pvv] int *qsd_dh; //高差起点号 int *zd_dh; //高差终点号 char **dm; //点名地址数组 double *gcz; //观测值数组 double *szd_gc; //高程值数组 double *P; //观测值的权 double *ATPA,*ATPL; //法方程系数矩阵与自由项 double *dX; //高程改正数、平差值 double *V; //残差 double m_mu; //单位权中误差 public: SZWPC(); ~SZWPC(); int ij(int i,int j);//对称矩阵下标计算函数 bool inverse(double a[],int n);//对称正定矩阵求逆(仅存下三角元素)(参考他人)

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

测绘程序设计实验八水准网平差程序设计报告 Document serial number【NL89WT-NY98YT-NC8CB-NNUUT-NUT108】

《测绘程序设计》上机实验报告 (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=Sea rchPointUsingID(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;

附合导线平差程序设计报告

《测量平差程序》课程设计 (报告) 学生姓名:罗正材 学号:1108030128 专业:2011级测绘工程 指导教师:肖东升

目录 一、前言 (3) 二、平差程序的基本要求 (3) 三、平差程序模块化 (3)

图1 四、平差中的重要函数 (一)、角度制与弧度制的相互转化 C/C++程序设计中,关于角度的计算以弧度制为单位,而在测量以及具体工作中我们通常习惯以角度制为单位。这样,在数据处理中,经常需要在角度制与弧度制之间进行相互转化。这里,我们利用C/C++数学函数库math.h中的相关函数完成这两种功能。 这里,我们使用double类型数据表示角度制数和弧度制数。例如:123度44分58.445秒,用double类型表示为123.4458445,其中分、秒根据小数位确定。 在角度制与弧度制的转化中,涉及如下图2所示的两个环节。 度.分秒度弧度 图2 1.角度化弧度函数 double d_h(double angle) //角度化弧度 { double a,b; angle=modf(angle,&a);//a为提取的度值(int类型),angle为分秒值(小数) angle=modf(angle*100.0,&b); // b为提取的分值(int类型),angle为秒值(小数) return (a+b/60.0+angle/36.0)*(PI+3.0E-16)/180.0; } 2.弧度化角度函数 double h_d(double angle) //弧度化角度

{ double a,b,c; angle=modf(angle*180.0/(PI-3.0E-16),&a); angle=modf(angle*60.0,&b); angle=modf(angle*60.0,&c); return a+b*0.01+c*0.0001+angle*0.0001; } 其中,函数modf(angle,&a)为C语言数学库函数,返回值有两个,以引用类型定义的a 返回angle的整数部分,函数直接返回值为angle的小数部分。 (二)近似坐标计算 在平面网间接平差计算中,近似坐标计算是非常重要的一项基础工作。近似坐标是否计算成功是间接平差是否可以进行的必要条件。 1.两方向交会 已知条件:两个点的近似坐标,这两个点到未知点的方位角,如图3所示 图3两方向交会 根据图4.2,设 1 1 α tg k=, 2 2 α tg k=,则很容易写出 ? ? ? ? ? ? - = - - = B P B P A P A P y y k x x y y k 2 1 整理该式,得两方向交会的的计算公式 ?? ? ? ? ? - - = ?? ? ? ? ? ?? ? ? ? ? - - B B A A P P y x k y x k y x k k 2 1 2 1 1 1 (4.1)对(4.1)式计算,即可得到未知点的近似坐标。应用中需要注意的是,若两方向值相同或相反,则该式无解。 程序中,定义该问题的函数为:int xy0ang(obser &a1,obser &a2) 2.三边交会 如图4所示,为排除两边长交会的二义性,给出如下三边交会的模型,已知条件:三个

C#附和导线平差程序设计实习报告

前言 随着测绘科学技术的不断发展,在测量数据的处理中产生很多种平差的方法。附和导线近似平差程序是利用C#编程实现的,我们需要将导线网的已知数据信息按照特定的规则输入到.txt文本中,利用C#程序读取文本数据信息后,对其进行一系列的平差计算,最终获得平差后的结果,并以.txt文本的形式输出,这样就可为测量工作提供一定的参考。 平差程序的基本要求 平差程序的设计与其他程序设计相同,应满足一定要求。 1.程序逻辑结构简单,清晰易读,符合结构化程序设计要求,便于拓展; 2.运算速度快,占用内存小,内外存储之间的交换不宜过于频繁; 3.数学模型及计算方法正确且先进,计算结果精度高; 4.适用性强,便于移植,充分考虑各种可能形式,满足不同需求; 5.方便用户,操作简单,输出明了、齐全,人机交互良好。 上述要求,既体现现在平差程序的总体设计中,也贯穿于平差程序设计的各个环节中。 平差程序中的重要函数 (一)角度制与弧度制的相互转化 C#程序设计中,关于角度的计算以弧度制为单位,而在测量工作中我们通常以角度制记录数据。所以,在数据处理中,通常需要在角度制与弧度制之间进行相互转化。这里我们需要利用相关函数完成这两种功能。 1.角度化弧度函数: static public double DEG(double ang) { int fuhao = (int)(ang / Math.Abs(ang)); ang = Math.Abs(ang); int d = (int)ang; int m = ((int)(ang * 100)) - d * 100; double s = ang * 10000 - m * 100 - d * 10000; return ((d + m / 60.0 + s / 3600.0) * fuhao) / 180.0 * Math.PI; } 2.弧度化角度函数: static public double DMS(double ang) { ang += 1.0E-15;//加上一个小量,以保证进位 int fuhao = (int)(ang / Math.Abs(ang));

平差易软件数据输入实例

导线实例 这就是一条符合导线的测量数据与简图,A、B、C与D就是已知坐标点,2、3与4就是待测的控制点。 测站点角度(°′″) 距离(米) X (米) Y(米) B 8345、8709 5216、6021 A 85、30211 1474、4440 7396、2520 5530、0090 2 254、32322 1424、7170 3 131、04333 1749、3220 4 272、20202 1950、4120 C 244、18300 4817、6050 9341、4820 D 4467、5243 8404、7624 导线原始数据表 导线图如下: 导线图 在平差易软件中输入以上数据,如下图“数据输入”所示:

数据输入 在测站信息区中输入A、B、C、D、2、3与4号测站点,其中A、B、C、D为已知坐标点,其属性为10,其坐标如“原始数据表”;2、3、4点为待测点,其属性为00,其它信息为空。如果要考虑温度、气压对边长的影响,就需要在观测信息区中输入每条边的实际温度、气压值,然后通过概算来进行改正。 根据控制网的类型选择数据输入格式,此控制网为边角网,选择边角格式。 如下图“选择格式”所示: 选择格式 在观测信息区中输入每一个测站点的观测信息,为了节省空间只截取观测信息的部分表格示意图,如下表 B、D作为定向点,它没有设站,所以无观测信息,但在测站信息区中必须输入它们的坐标。 以A为测站点,B为定向点时(定向点的方向值必须为零),照准2号点的数据输入如下图“测站A的观测信息”所示: 测站A的观测信息 以C为测站点,以4号点为定向点时,照准D点的数据输入如下图“测站C的观测信息”所示: 测站C的观测信息 2号点作为测站点时,以A为定向点,照准3号点,如下图“测站2的观测信息”所示: 测站2的观测信息 以3号点为测站点,以2号点为定向点时,照准4号点的数据输入如下图“测站3的观测信息”所示: 测站3的观测信息 以4号点为测站点,以3号点为定向点时,照准C点的数据输入如下图“测站4的观测信息”所示:

水准网的条件平差

目录 目录 (1) 观测误差 (2) 摘要: (2) 关键词: (2) 引言 (3) 1水准测量 (4) 1.1水准测量的原理 (4) 1.2水准网 (5) 2条件平差 (6) 2.1衡量精度的指标 (6) 2.2条件平差的原理 (8) 3水准网的平差 (14) 3.1必要观测与多余观测 (14) 3.2条件方程 (14) 3.3条件平差法方程式 (14) 3.4条件平差的精度评定 (15) 3.5水准网的条件平差 (18) 致谢 (20) 参考文献 (21)

观测误差 —由观测者、外界环境引起的偶然误差 学生: xxx 指导教师:xxx 摘要: 对一系列带有偶然误差的观测值,采用合理的的方法消除它们间的不符值,得出未知量的最可靠值;以及评定测量成果的精度。 关键词: 偶然误差;观测值;精度

引言 测量工作中,要确定地面点的空间位置,就必须进行高程测量,确定地面点的高程。几何水准测量是高程测量中最基本、最精密的一种方法。通过测量仪器,工具等任何手段获得的以数字形式表示的空间信息,即观测量。然而,测量是一个有变化的过程,受仪器、观测值、外界环境因素的影响,观测的结果与客观上存在的一个能反映其真正大小的数值,即真值(理论值),有一定的差异。可以说在测量中产生误差是不可避免的。所以,观测值不能准确得到,在测量上称这种差异为观测误差。根据其对观测结果影响的性质,可将误差分为系统误差和偶然误差两种。前者可以通过在观测过程中采取一定的措施和在观测结果中加入改正数,消除或减弱它的影响,使其达到忽略不计的程度。但是,观测结果中,不可避免地包含了后者,它是不可消除的,但可以选择较好的观测条件或采用适当的数据处理方法减弱它。现在我们要讨论的就是采用适当的数据处理方法来减弱其对水准测量中的影响。

水准网平差c++代码

水准网平差 结果 #include #include #include #include #define max 50 class CMatrix { public: CMatrix(){row=0; column=0;}; // 默认构造函数 CMatrix(int i, int j){row=i;column=j;} // 构造函数一 CMatrix(const CMatrix& m); // 复制构造函数 ~CMatrix(void){/*cout<<"谢谢使用,矩阵所占空间以释放!"<

结点水准网外业检核及平差计算

结点水准网外业检核及平差计算 如图所示结点水准网,BM1、BM2、BM3为已知水准点,高程分别为 m H 099.971=,m H 065.1002=, m H 475.963=,观测高差和水准路线 长度见下表,试计算A1点的高程平差值及其中误差。 一、三等水准测量外业检核 1、测站限差 等级 水准仪 型号 视距 (m) 前后 视距差 (m ) 前后视距累计差 (m ) 视线高度 黑红面 读数差 (mm) 黑、红面 高差之差 (mm) 三等 DS3 ≤75 ≤2 ≤5 三丝能读数 2.0 3.0 2、测段、附合路线或环线闭合差 测量等级 测段、路线往返测 高差不符值 (mm ) 附合路线或环线闭合差(mm ) 检测已测测 段高差之差 (mm ) 平原 山岭 三等 K 12± L 12± L 15± R 20± h3 h2 h1 S1 S2S3

二、测段外业计算与检核 测 段 实测高差(m) 往返测高差不符值 (mm ) 往返测高差 不符值限差 (mm ) 测段路线 长度均值(km ) 往返测高差 平均值 (m ) 往测 返测 BM1-A1 -0.178 +0.180 +2 ±5 0.240 -0.179 BM2-A1 -3.147 +3.147 0 ±5 0.175 -3.147 BM3-A1 +0.443 -0.442 +1 ±4 0.127 +0.442 三、外业附合路线或闭合路线计算与检核 附合路线 起点高程 (m ) 实测高差(m ) 终点高程 (m ) 路线长度(km ) 闭合差 (mm ) 限差 (mm ) h 1 h 2 BM1- BM2 97.099 -0.179 +3.147 100.065 0.415 +2 ±7 BM1- BM3 97.099 -0.179 -0.442 96.475 0.367 +3 ±7 BM2- BM3 100.065 -3.147 -0.442 96.475 0.302 -1 ±6 终始H h h H f h -++=21 (注意h2方向) 四、待定点高程最或是值及精度计算 路 线 号 起始点 高程 (m ) 实测 高差 (m ) 结点观 测高程 (m ) 路线 长度 (km ) 权 i i S C P = 改正数V (km ) Pvv 1 97.099 -0.179 96.920 0.240 4.1667 - 2 16.6668 2 100.065 -3.147 96.918 0.175 5.714 3 0 0 3 96.475 +0.442 96.917 0.127 7.8740 +1 7.8740 ∑ 17.755 24.5408 结点高程及中 误差 计算 结点高程: [][] P PH H A = 1= 96.918m 改正数:i A A i H H V 11-= 单位权误差:[] 1 ?0-=n pvv σ=±3.50mm 结点高程最或是值中误差:[] P A H 0??1 σ σ ==±0.83mm

水准网平差软件使用说明

电子水准仪数据处理及平差软件 用户操作手册 中铁二院工程集团有限责任公司 二零零九年

目录 1引言 (1) 1.1 编写目的 (1) 1.2 背景 (1) 2软件的功能和性能 (1) 2.1 软件功能和适用范围 (1) 2.1.1软件的主要功能有: (1) 2.1.2软件的主要输出内容包括: (1) 2.2 软件的性能 (2) 3运行环境 (2) 3.1 硬件设备 (2) 3.2 支持软件 (2) 3.3 数据存储 (2) 4软件安装说明 (3) 5“电子水准仪数据处理及平差软件”使用说明 (3) 5.1选择工作路径 (3) 5.2“电水数据处理”菜单 (4) 5.2.1设置转换参数 (4) 5.2.2生成高差文件 (5) 5.2.3生成平差文件 (6) 5.2.4输出观测手簿 (6) 5.3“高程平差处理”菜单 (6) 5.3.1选择平差文件 (7) 5.3.2闭合差计算 (7) 5.3.3网平差处理 (8) 5.4“结果显示”菜单 ........................................................................ 错误!未定义书签。6“电子水准仪数据处理与平差软件”文件说明 (8)

1引言 1.1编写目的 《“电子水准仪数据处理及平差软件”用户操作手册》是高速铁路沉降观测评估软件之一“电子水准仪数据处理及平差软件”的使用说明,能够指导测量技术人员正确使用“电子水准仪数据处理及平差软件”。 1.2背景 为了满足高速铁路线下沉降变形观测与评估的需要,适应铁路施工与评估单位对其数据处理的要求,中铁二院工程集团有限责任公司研制了自主版权的“电子水准仪数据处理及平差软件”。 2软件的功能和性能 2.1软件功能和适用范围 电子水准仪数据处理及平差软件,是专为我国高速铁路线下沉降观测评估而设计的电子水准仪数据处理与高程平差计算软件。 2.1.1软件的主要功能有: 1、根据需要选择工作路径; 2、根据设置生成高差文件; 3、生成平差文件; 4、输出观测手簿; 5、闭合环自动搜索与闭合差计算; 6、网平差处理与成果输出; 2.1.2软件的主要输出内容包括: 1、可输出高程控制网测段实测高差数据;

MATLAB水准网间接平差课程作业程序

条件平差 A=[1 -1 0 0 1 0 0;0 0 1 -1 1 0 0;0 0 1 0 0 1 1;0 1 0 -1 0 0 0]; Q=diag(s); W=zeros(4,1); W(1)=h(1)-h(2)+h(5); W(2)=h(3)-h(4)+h(5); W(3)=h(3)+h(6)+h(7); W(4)=h(2)-h(4)+H(1)-H(2); W=W.*1000; Naa=A*Q*(A'); K=-1.*inv(Naa)*W; V=Q*(A')*K; L=h'+V./1000; X=zeros(1,3); X(1)=H(1)+L(1); X(2)=H(1)+L(2); X(3)=H(2)-L(7); ZWC=sqrt(V'*inv(Q)*V/4); QLL=Q-Q*A'*inv(Naa)*A*Q; ZWC_h5=ZWC*sqrt(QLL(5,5)); 间接平差 h1=1.359; h2=2.009; h3=0.363; h4=1.012; h5=0.657; h6=0.238; h7=-0.595; H1=5.016 H2=6.016 h=[h1 h2 h3 h4 h5 h6 h7]' s=[1.1 1.7 2.3 2.7 2.4 1.4 2.6]' B=[1 0 0 ;0 1 0; 1 0 0;0 1 0 ; -1 1 0 ; -1 0 1 ;0 0 -1 ] p=diag(1./s) l=[0;0;4;3;7;2;0] W=B'*p*l Nbb=B'*p*B x=inv(Nbb)*W V=(B*x-l) H=h+V/1000 Q=inv(Nbb) n=7;

平差易软件数据输入实例

导线实例 这是一条符合导线的测量数据和简图,A、B、 C 和 D 是已知坐标点,2、3 和 4 是待测的控制点。 导线图如下: 导线图 在平差易软件中输入以上数据,如下图“数据输入”所示:

数据输入 在测站信息区中输入A、B、C、D、2、3和4号测站点,其中A、B、C、D 为已知坐标点,其属性为10,其坐标如“原始数据表”;2、3、4 点为待测点,其属性为00,其它信息为空。如果要考虑温度、气压对边长的影响,就需要在观测信息区中输入每条边的实际温度、气压值,然后通过概算来进行改正。 根据控制网的类型选择数据输入格式,此控制网为边角网,选择边角格式如下图“选择格式”所示: 选择格式 在观测信息区中输入每一个测站点的观测信息,为了节省空间只截取观测信息的部分表格示意图,如下表 B、D 作为定向点,它没有设站,所以无观测信息,但在测站信息区中必须输入它们的坐标。 以A为测站点,B为定向点时(定向点的方向值必须为零),照准2号点的数据输入如下图“测站A 的观测信息”所示: A 的观测信息 以C 为测站点,以4 号点为定向点时,照准D 点的数据输入如下图“测站C 的观测信息”所示: C 2 2 以3 号点为测站点,以2 号点为定向点时,照准4 号点的数据输入如下图“测站3 的观测信息”所示: 3 以4 号点为测站点,以3 号点为定向点时,照准C 点的数据输入如下图“测站4 的观测信息”所示:

测站 4 的观测信息 说明:①数据为空或前面已输入过时可以不输入(对向观测例外) ②在电子表格中输入数据时,所有零值可以省略不输。 以上数据输入完后,点击菜单“文件另存为”,将输入的数据保存为平差易数据格式文件(格式内容详见附录A ): [STATION] (测站信息) B,10,8345.870900,5216.602100 A,10,7396.252000,5530.009000 C, 10,4817.605000,9341.482000 D, 10,4467.524300,8404.762400 2,00 3,00 4,00 [OBSER] (观测信息) A,B,,1000.0000 A,2,85.302110,1474.4440 C,4 C,D,244.183000,1000.0000 2,A 2,3,254.323220,1424.7170 3,2 3,4,131.043330,1749.3220 4,3 4,C,272.202020,1950.4120 上面[STATION] (测站点)是测站信息区中的数据,[OBSER] (照准点)是观测信息区中的数据。 水准实例 这是一条符合水准的测量数据和简图,A和B是已知高程点,2、3和4是待测的

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

《测绘程序设计》 上机实验报告 (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;

水准网间接平差程序设计(C++)

水准网间接平差程序设 计(C++) -CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN

//////////////////////////////////////////////////// // visual C++ 编译通过 // //////////////////////////////////////////////////// /////////////////////////////////////////////////// // 参考资料 // // 部分网络资料 // // 宋力杰《测量平差程序设计》 // //姚连壁《基于matlab的控制网平差程序设计》 // /////////////////////////////////////////////////// #include #include #include <> #include<> #include using namespace std; //////////////////////////////////////////////////////////////////////////class class SZWPC { private: int gcz_zs; //高差总数 int szd_zs; //总点数 int yz_szd_zs; //已知点数 double m_pvv; //[pvv] int *qsd_dh; //高差起点号 int *zd_dh; //高差终点号 char **dm; //点名地址数组 double *gcz; //观测值数组 double *szd_gc; //高程值数组 double *P; //观测值的权 double *ATPA,*ATPL; //法方程系数矩阵与自由项 double *dX; //高程改正数、平差值 double *V; //残差 double m_mu; //单位权中误差 public: SZWPC(); ~SZWPC(); int ij(int i,int j);//对称矩阵下标计算函数

单一结点或附合的水准路线的精度评定

单一结点或附合的水准路线的精度评定 修涛 Abstract: Measure in the level is different to constitute to shut to match, attach to match because of the route testing with the form of crunode.Therefore is even bad method as well along with different.In Gao Cheng Wang, if the even bad method choice is fitting, can get the effect of half effort and double results.Only this text introduction has a crunode of three or four level routes and an illustrated manual table of level route attaching to match is even to differ.The method has a homework step simple, characteristics easily control, can also satisfy 3, 4 to etc. level to measure at the same time even bad accuracy request. Key word: Level instrument Leveling network Node Precision evaluation Analysis 摘要:在水准测量中,由于施测的路线不同可组成闭合、附合和结点的形式。因此平差方法亦随着不同.在高程网中,如果平差方法选择恰当,可以得到事半功倍的效果.本文仅介绍具有一个结点的三条或四条水准路线和附合的一条水准路线的图解平差。该方法具有作业步骤简单,容易掌握的特点,同时也能满足三、四等水准测量平差的精度要求。 关键词:水准仪水准网结点精度评定分析 一、基本原理(见图1-1) 利用水准仪提供的水平视线读取竖立于两个点上的水准尺上的读数,来测定两点间的高差,再根据已知点高程计算待定点高程。 图1-1 水准测量原理

相关主题
文本预览
相关文档 最新文档