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

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

《测量平差程序》课程设计

(报告)

学生姓名:***

学号:**********

专业:2011级测绘工程

指导教师:肖东升

目录

一、前言 (3)

二、平差程序的基本要求 (3)

三、平差程序模块化 (3)

四、平差中的重要函数 (4)

五、结论 (7)

六、部分源代码 (7)

一、前言

随着测绘科学技术的不断发展,在测量数据的处理中产生很多种平差的方法。在本文中,附合导线近似平差程序是利用C++编程实现的,我们需要将导线网的已知数据信息按照特定的规则输入到.txt文本中,利用C++程序读取文本数据信息后,对其进行一系列的平差计算,最终获得平差后的结果,并以.txt文本的形式输出且保存,这样就可为测量工作提供一定的参考,还能为测绘数据的管理带来帮助。

二、平差程序的基本要求

平差程序设计与其它程序设计相同,应当满足一定的要求。

(1)程序逻辑结构简单,清晰易读,符合结构化程序设计要求,便于扩展;

(2)运算速度快,占用内存小,内外存之间的交换不宜过于频繁;

(3)数学模型及计算方法正确、先进,计算结果精度高;

(4)适应性强,便于移植,充分考虑各种可能形式,尽量满足不同要求与需要;

(5)方便用户,操作简便。数据输入与用户作业方式与习惯相统一,输出明了、齐全;尽量减少手工处理工作量,操作简便;人机交互性要强。

上述要求,既体现在平差程序的总体设计中,也贯穿于平差程序设计的各个环节中。

三、平差程序模块化

图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,设11

αtg k =,22αtg k =,则很容易写出

⎪⎪⎩

⎪⎪⎨⎧

--=--=B P B P A

P A P x x y y k x x y y k 21 整理该式,得两方向交会的的计算公式

⎪⎪⎭⎫

⎝⎛--=⎪⎪⎭⎫ ⎝⎛⎪⎪⎭⎫ ⎝⎛--B B

A A P P y x k y x k y x k k 212111

(4.1)

对(4.1)式计算,即可得到未知点的近似坐标。应用中需要注意的是,若两方向值相同或相反,则该式无解。

程序中,定义该问题的函数为:int xy0ang (obser &a1,obser &a2) 2.三边交会

如图4所示,为排除两边长交会的二义性,给出如下三边交会的模型,已知条件:三个

点的近似坐标,这三个点到未知点的距离测量值。

图4 三边交会 对每条边长测量值,可列出边长条件

⎪⎩⎪⎨⎧-+-=-+-=-+-=)

()

()()()()()()()(222322222221c y y x x S b y y x x S a y y x x S C P C P B P B P A P A P

计算上式中(a )与(b )和(c )三式的差,消去未知参数的平方项,整理得三边交会的计算公式

⎪⎪

⎫ ⎝⎛++---++---=⎪⎪⎭⎫ ⎝⎛⎪⎪⎭⎫

⎝⎛----222221222322212222A A C C A A B B P P C A C

A B A B

A y x S y x S y x S y x S y x y y x x y y x x (4.2)

对(4.2)式计算,即可得到未知点的近似坐标。应用中需要注意的是,若三点位于同一条直线,则该式无解。程序中,定义该问题的函数为:int xy0dist (obser &a ,obser &b , obser &c )。 3.坐标正算

使用测量正算公式计算控制网的近似坐标。程序中,定义该问题的函数为:

int zheng (obser &a ) 4.角度后方交会

使用测量后方交会计算公式计算控制网的近似坐标。程序中,定义该问题的程序函数为:

int houj (obser &a ,obser &b , obser &c ) 5.测角网无定向导线计算

无定向导线,主要应用于计算已知控制点不相邻的三角网的近似坐标。基本思想为:先由一个已知点开始,假设一条边的边长与方位角,根据三角网的角度观测值推算其它边的边长与方位角,然后,由任一导线计算,直到计算至另一个已知点为止。假设导线的起点为A ,终点为B 。这时,计算出的B 点坐标必然与已知坐标不同,设A 与B 的已知坐标为(B B A A y x y x ,,,),B 点的计算坐标为B ’

('

',B B y x ),则用这些数据可以计算边长的放大系

数k 和假设方位角的改正数da

2

22

'

2')

()()()(A B A B A B A B y y x x y y x x k -+--+-=

相关文档
最新文档