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

上传人:pu****.1 文档编号:477094529 上传时间:2023-07-04 格式:DOC 页数:14 大小:190KB
返回 下载 相关 举报
附合导线平差程序设计报告材料_第1页
第1页 / 共14页
附合导线平差程序设计报告材料_第2页
第2页 / 共14页
附合导线平差程序设计报告材料_第3页
第3页 / 共14页
附合导线平差程序设计报告材料_第4页
第4页 / 共14页
附合导线平差程序设计报告材料_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《附合导线平差程序设计报告材料》由会员分享,可在线阅读,更多相关《附合导线平差程序设计报告材料(14页珍藏版)》请在金锄头文库上搜索。

1、word测量平差程序课程设计报告学生某某:罗正材学 号:1108030128专 业:2011级测绘工程指导教师:肖东升目录一、前言3二、平差程序的根本要求3三、平差程序模块化3四、平差中的重要函数4 五、结论7 六、局部源代码7一、前言随着测绘科学技术的不断开展,在测量数据的处理中产生很多种平差的方法。在本文中,附合导线近似平差程序是利用C+编程实现的,我们需要将导线网的数据信息按照特定的规如此输入到.txt文本中,利用C+程序读取文本数据信息后,对其进展一系列的平差计算,最终获得平差后的结果,并以.txt文本的形式输出且保存,这样就可为测量工作提供一定的参考,还能为测绘数据的管理带来帮助。二

2、、平差程序的根本要求平差程序设计与其它程序设计一样,应当满足一定的要求。1程序逻辑结构简单,清晰易读,符合结构化程序设计要求,便于扩展;2运算速度快,占用内存小,内外存之间的交换不宜过于频繁;3数学模型与计算方法正确、先进,计算结果精度高;4适应性强,便于移植,充分考虑各种可能形式,尽量满足不同要求与需要;5方便用户,操作简便。数据输入与用户作业方式与习惯相统一,输出明了、齐全;尽量减少手工处理工作量,操作简便;人机交互性要强。 上述要求,既表现在平差程序的总体设计中,也贯穿于平差程序设计的各个环节中。三、平差程序模块化图1四、平差中的重要函数 一、角度制与弧度制的相互转化C/C+程序设计中,

3、关于角度的计算以弧度制为单位,而在测量以与具体工作中我们通常习惯以角度制为单位。这样,在数据处理中,经常需要在角度制与弧度制之间进展相互转化。这里,我们利用C/C+数学函数库math.h中的相关函数完成这两种功能。这里,我们使用double类型数据表示角度制数和弧度制数。例如:123度44分58.445秒,用double类型表示为123.4458445,其中分、秒根据小数位确定。在角度制与弧度制的转化中,涉与如如下图2所示的两个环节。度.分秒度弧度图21.角度化弧度函数doubled_h(doubleangle) /角度化弧度doublea,b;angle=modf(angle,&a);/a

4、为提取的度值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.弧度化角度函数doubleh_d(doubleangle) /弧度化角度doublea,b,c;angle=modf(angle*180.0/(PI-3.0E-16),&a);angle=modf(angle*60.0,&b);angle=modf(angle*60.0,&c);returna+b*0.01+c*0.0001+angle*0.00

5、01;其中,函数modf(angle,&a)为C语言数学库函数,返回值有两个,以引用类型定义的a返回angle的整数局部,函数直接返回值为angle的小数局部。二近似坐标计算在平面网间接平差计算中,近似坐标计算是非常重要的一项根底工作。近似坐标是否计算成功是间接平差是否可以进展的必要条件。1.两方向交会条件:两个点的近似坐标,这两个点到未知点的方位角,如图3所示图3 两方向交会根据图4.2,设,如此很容易写出 整理该式,得两方向交会的的计算公式 4.1对4.1式计算,即可得到未知点的近似坐标。应用中需要注意的是,假如两方向值一样或相反,如此该式无解。程序中,定义该问题的函数为:intxy0an

6、g(obser &a1,obser &a2)2.三边交会如图4所示,为排除两边长交会的二义性,给出如下三边交会的模型,条件:三个点的近似坐标,这三个点到未知点的距离测量值。 图4 三边交会对每条边长测量值,可列出边长条件计算上式中a与b和c三式的差,消去未知参数的平方项,整理得三边交会的计算公式 4.2对4.2式计算,即可得到未知点的近似坐标。应用中需要注意的是,假如三点位于同一条直线,如此该式无解。程序中,定义该问题的函数为:intxy0dist(obser &a,obser &b, obser &c)。3.坐标正算 使用测量正算公式计算控制网的近似坐标。程序中,定义该问题的函数为:intz

7、heng(obser &a)4.角度后方交会 使用测量后方交会计算公式计算控制网的近似坐标。程序中,定义该问题的程序函数为:inthouj(obser &a,obser &b, obser &c)5.测角网无定向导线计算无定向导线,主要应用于计算控制点不相邻的三角网的近似坐标。根本思想为:先由一个点开始,假设一条边的边长与方位角,根据三角网的角度观测值推算其它边的边长与方位角,然后,由任一导线计算,直到计算至另一个点为止。假设导线的起点为A,终点为B。这时,计算出的B点坐标必然与坐标不同,设A与B的坐标为,B点的计算坐标为B,如此用这些数据可以计算边长的放大系数k和假设方位角的改正数da其中,

8、为计算方位角的函数。这时,对网中的假设边长和所有由假设边长推算的近似边长进展k倍的放大,对假设方位角和所有由假设方位角推算的近似方位角进展方位角改正。然后应用坐标正算法可以计算三角网中所有点的近似坐标。五、 结论:C+在导线平差中的应用在导线网的间接平差程序设计与实现中,通过使用C+编程,采用测量平差中的间接平差的方法,实现了导线网的间接平差,最终得到了导线网中待定数据。在导线网平差的程序应用中,利用已经编好的导线网间接平差程序,对边角网、三角网的实例进展了平差,最终得到导线网的待定数据以与相关的精度评定,通过对这些平差结果的检查,最后,认为此导线网的间接平差程序可以为测量的平差工作提供一些服

9、务。虽然此程序可以完成导线网平差一些工作,但是它还有很多的不足地方需要改良以与完善。平差程序的实现定义了五个结构体间接平差结构、平面网、平面点、测站、观测值,通过一系列的函数将这五个结构体联系起来,最终完成平差任务。下面阐述一下导线网的间接平差程序实现的根本流程:1以DAT文件的形式输入导线网中的控制点、测站信息、观测值、测角中误差、测距加、乘常数等所有的数据,并且这些数据的输入必须符合前面所提到的数据输入格式;2 运用程序读取输入数据文件,通过相应的函数求得待定点的近似坐标;3通过相应函数,求取间接平差的结构:误差方程系数阵A、观测权阵P、误差方程常数项l;4通过间接平差函数,实现对已经得到

10、的间接平差结构的平差工作。5最后,以DAT文件的格式输出并保存平差处理结果,为以后的测量工作提供参考。六、局部源代码:/度分秒化成弧度double DMStoRAD(double dms)int d, m, f; double s;f = dms=0 ? 1 : -1;/0.001秒 4.8481368110953599358991410235795e-9弧度dms += f * 0.0000001;d = (int)dms;dms = (dms - d) * 100.0;m = (int)dms;s = (dms - m) * 100.0;return (d + m / 60.0 + s /

11、 3600.0) * _TORAD- f * 4.8481368110953599358991410235795e-9;/弧度转“度分秒double RADtoDMS(double rad) int f = rad = 0 ? 1 : -1; / 符号 /加0.001秒用弧度表示,化为度 rad = (rad + f * 4.8481368110953599358991410235795e-9) * _TODEG; int d = (int)rad; rad = (rad - d) * 60.0;int m = (int)rad;double s = (rad - m) * 60.0;retu

12、rn d + m / 100.0 + s / 10000.0 - f * 0.0000001; /读入点的坐标void ReadKnwData(FILE * in, DyArray * array)char buffer256;double dx,dy;SurPnt pnt;while ( !feof(in) )fgets(buffer, sizeof(buffer), in);if ( sscanf(buffer, %s %lf %lf, pnt.name, &pnt.x, &pnt.y) = 3)Add(array, pnt);elsebreak;dx = array-elem1.x -

13、array-elem0.x;dy = array-elem1.y - array-elem0.y;adj.azi0=atan2(dy, dx) + (dy elem3.x - array-elem2.x;dy = array-elem3.y - array-elem2.y;adj.azin=atan2(dy, dx) + (dy elem1.x;adj.y1=array-elem1.y;adj.xn=array-elem2.x;adj.yn=array-elem2.y;Destroy(array);/观测值信息写到动态数组void ReadObsValue(FILE * in, DyArray * array)char buffer256; double dir0,dir1,dist0,dist1;SurPnt pnt;/用于临时保存点的坐标while ( !feof(in) )fgets(buffer, sizeof(buffer), in);if( feof(in) ) return;if(sscanf(buffer, %s %s %lf %lf %s %lf %l

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号