高斯正反算及空间直角坐标与大地地理坐标转换.doc_第1页
高斯正反算及空间直角坐标与大地地理坐标转换.doc_第2页
高斯正反算及空间直角坐标与大地地理坐标转换.doc_第3页
高斯正反算及空间直角坐标与大地地理坐标转换.doc_第4页
高斯正反算及空间直角坐标与大地地理坐标转换.doc_第5页
免费预览已结束,剩余11页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

高斯正反算及空间直角坐标与大地地理坐标转换一、实验目的与要求1对以上理论内容的验证与应用。2通过学习掌握测绘软件开发过程与方法,初步具备测绘软件开发基本技能。3熟练掌握Visual C+编程环境的使用,了解其特点与程序开发过程,掌软件调试、测试的技术方法。4分析测绘程序设计技术课程中相关软件的结构和模块功能,掌握结构化程序设计方法和技术,掌握测绘数据处理问题的基本特点。5开发相关程序功能模块,独立完成相关问题概念结构分析、程序结构设计、模块设计、代码编写、调试、测试等工作。二、实验安排1实验时数12学时。2每实验小组可以由34人组成,或独立完成。若由几个人完成程序设计,应进行合理的分工。三、实验步骤和要点1熟悉程序设计任务书的基本内容,调查了解软件需求状况,进行需求分析;2进行总体设计。根据所调查收集的资料和任务书的要求,对系统的硬件资源进行初步设计,提出硬件配置计划;进行软件总体设计,设计出软件程序功能的模块;3根据总体设计的结果,进行详细设计,进行数据存储格式设计、算法等,写出逻辑代码;4编写程序代码,调试运行;5程序试运行。最后同学们可根据自己的选题,写出软件开发设计书一份,打印程序代码和运行结果。 四 实验原理高斯正反算:高斯正反算包括两部分内容:高斯正算和高斯反算。简单的说就是大地地理坐标系坐标(B,L)与其对应的高斯平面直角坐标系坐标(x,y)之间的转换。若已知大地地理坐标系坐标(B,L)解求对应的高斯平面直角坐标系坐标(x,y)称为高斯正算;反之,则为高斯反算。 空间直角坐标与大地地理坐标转换:地球表面可用一个椭球面表示。设空间直角坐标系为OXYZ,当椭球的中心与空间直角坐标系原点重合,空间坐标系Z轴与地球旋转重合(北极方向为正),X轴正向经度为零时,就可以确定空间直角坐标系与大地地理坐标系的数学关系。 式中 N为卯酉圈曲率半径,; e为椭球偏心率, (a,b为椭球长半轴和短半轴)。 由(2)式可以得到空间直角坐标到大地地理坐标的迭代计算公式 使用(3)式进行迭代计算的关键是纬度B的计算。迭代计算的初始值可以设为 在迭代计算中,可以选择以下条件作为迭代结束条件 五 实验内容其主要内容如下:从空间直角坐标转换到大地地理坐标及从大地地理坐标转换到空间直角坐标。程序编写过程需要注意一下问题:1、 参考椭球的选择2、 转换类型选择3、 角度弧度转换4、 TanB的迭代解算对于参考椭球的选择和转换类型的选择,只需要swith语句就可实现。参考椭球的选择,一般我们选用以下三种:WGS1984参考椭球: a=6378137 bm=298.2572235635西安1980参考椭球: a=6378140 bm=298.257北京1954参考椭球: a=6378245 bm=298.3其中,a为椭球长半轴,bm为扁率分母。 角度弧度的转化:#include #define pi 3.14159265double Tranlate(const double Degree) return (Degree*180/pi);int main () cout Tranlate(2.45) endl; return 0;六 程序代码#include #include #include #include #define PI 3.141592653589793double DMS2RAD(double dmsAngle)int degAngle,minAngle,intSignOfDms;double radAngle,secAngle;intSignOfDms = 1;if(dmsAngle0.00001); bf=Bf1; c=a*a/b; v=sqrt(1+e1*e1*cos(bf)*cos(bf); Nf=c/v; Mf=c/(v*v*v); tf=sin(bf)/cos(bf); itaf=e1*cos(bf); dietaB=tf*coor_y*coor_y/(2*Mf*Nf)-tf*(5+3*tf*tf+itaf*itaf-9*tf*tf*itaf*itaf)*coor_y*coor_y*coor_y*coor_y/(24*Mf*Nf*Nf*Nf)+(61+90*tf*tf+45*tf*tf*tf*tf)*coor_y*coor_y*coor_y*coor_y*coor_y*coor_y/(720*Mf*Nf*Nf*Nf*Nf*Nf); dietal=coor_y/(Nf*cos(bf)+(1+2*tf*tf+itaf*itaf)*cos(bf)*coor_y*coor_y/(6*Nf)+(5+44*tf*tf+32*tf*tf*tf*tf-2*itaf*itaf-16*itaf*itaf*tf*tf)/(360*Nf*Nf*Nf*Mf*Mf*cos(bf); B=bf-dietaB; L=l0+dietal; dmslat=RAD2DMS(B); dmslon=RAD2DMS(L); printf(已知点的纬度(ddd.mmss)为:%.9lfn,dmslat); printf(已知点的经度(ddd.mmss)为:%.9lfn,dmslon); 以下为选择参考椭球的函数:int choose_ellipsoid()int style; do cout 请选择参考椭球类型:n 1. WGS1984参考椭球; n 2. 西安1980参考椭球; n 3. 北京1954参考椭球; n 4.退出 n style; switch(style) case 1: a=6378137 ; bm=298.2572235635; break; case 2:a=6378140 ; bm=298.257; break; case 3:a=6378245 ; bm=298.3; break;case 4:return 0; default : cout 错误:非法类型选择! 请重新选择 endl; style=0; while(style=0); 七 实验结果八 实验体会始编写以后自己做了一个下午,效果太不明显了,就与几个做同一题目的讨论了一下,还好讨论后收获不小,终于明白了这些东西不是听的明白就行的,真正的掌握必须是听得懂,做得对,而我离把他们全部做对还有一段距离,幸好那时时间还是比较充足的,晚上就抽空把老师的课件看了几遍,有的时候就边看边写。经过两天的努力终于马马虎虎的把初步的程序给写出来了。心里多了些舒坦。通过本次试验使学到了很多很多的东西,不仅巩固了以前所学过的知识,也学到了许多书本上没有的知识。通过这次课程设计使我懂得了理论与实际相结合是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论