- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
空间直角坐标系与空间大地坐标系的相互转换及其C源程序
空间直角坐标系与空间大地坐标系的相互转换
1.空间直角坐标系/笛卡尔坐标系
坐标轴相互正交的坐标系被称作笛卡尔坐标系。三维笛卡尔坐标系也被称为空间直角坐标系。在空间直角坐标系下,点的坐标可以用该点所对应的矢径在三个坐标轴上的投影长度来表示,只有确定了原地、三个坐标轴的指向和尺度,就定义了一个在三维空间描述点的位置的空间直角坐标系。
以椭球体中心O为原点,起始子午面与赤道面交线为X轴,在赤道面上与X轴正交的方向为Y轴,椭球体的旋转轴为Z轴构成右手坐标系O.XYZ,在该坐标系中,P点的位置用X,Y,Z表示。
在测量应用中,常将地球空间直角坐标系的坐标原点选在地球质心(地心坐标系)或参考椭球中心(参心坐标系),z轴指向地球北极,x轴指向起始子午面与地球赤道的交点,y轴垂直于XOZ面并构成右手坐标系。
空间直角坐标系
2.空间大地坐标系
由于空间直角坐标无法明确反映出点与地球之间的空间关系,为了解决这一问题,在测量中引入了大地基准,并据此定义了大地坐标系。大地基准指的是用于定义地球参考椭球的一系列参数,包括如下常量:
2.1椭球的大小和形状
2.2椭球的短半轴的指向:通常与地球的平自转轴平息。
2.3椭球中心的位置:根据需要确定。若为地心椭球,则其中心位于地球质心。
2.4本初子午线:通过固定平极和经度原点的天文子午线,通常为格林尼治子午线。
以大地基准为基础建立的坐标系被称为大地坐标系。由于大地基准又以参考椭球为基准,因此,大地坐标系又被称为椭球坐标系。大地坐标系是参心坐标系,其坐标原点位于参考椭球中心,以参考椭球面为基准面,用大地经度L、纬度B和大地高H表示地面点位置。过地面点P的子午面与起始子午面间的夹角叫P点的大地经度。由起始子午面起算,向东为正,叫东经(0°~180°),向西为负,叫西经(0°~-180°)。过P点的椭球法线与赤道面的夹角叫P点的大地纬度。由赤道面起算,向北为正,叫北纬(0°~90°),向南为负,叫南纬(0°~-90°)。从地面点P沿椭球法线到椭球面的距离叫大地高。大地坐标坐标系中,P点的位置用L,B表示。如果点不在椭球面上,表示点的位置除L,B外,还要附加另一参数——大地高H。
空间大地坐标系
3.空间直角坐标与大地坐标间的转换
3.1大地坐标转换为空间直角坐标
将同一坐标系下的大地坐标(B、L、H)转换成空间直角坐标(X、Y、Z)的转换公式为:
式中N为卯酉圈的半径,a为参考椭球的长半轴;b为参考椭球的短半轴;e为参考椭球的第一偏心率;并且有
若点在椭球面上,则大地高H=0,上式可简化为:
3.2空间直角坐标转换为空间大地坐标
将同一坐标系下的空间直角坐标(X、Y、Z)转换为空间大地坐标(B、L、H)的公式为:
在使用上式进行空间直角坐标到大地坐标的转换过程中,由于计算大地纬度口时用到大地高Ⅳ,而计算大地高时又需要用到大地纬度口.因此不能直接由空间直角坐标计算出大地坐标,而需要采用迭代计算的方法。具体计算时,可先根据下式求出大地纬度口的初值:
然后利用该初值来求出H、N的初值,再利用所求出的H和N初值再次求出B值.如此反复,直至求出的及日、Ⅳ收敛为止。
4.算例
本文根据以上公式在Microsoft VC++6.0环境下编写了一段程序(见附录)。算例中的坐标采用的是武汉大学信息学部友谊广场上的某点的大地坐标作为已知值,然后经过转换函数CRDGEODETICtoCRDCARTESEAN(pcg, pcc, dSemiMajorAxis,dFlatning)把大地坐标转换为空间直角坐标得到坐标X、Y、Z。由得到的空间直角坐标X、Y、Z,经过转换函数 CRDCARTESIANtoCRDGEODETIC(pcc,pcg,dSemiMajorAxis,dFlatning)把空间直角坐标还原成空间大地坐标,计算结果如下图所示:
计算结果
从上图可以看出结果比较满意,高程和精度基本能完全还原,而纬度还原后有较大的误差,在测量中这种误差不允许的,需要修改算法,完善结果。可能引起的原因有可能是由于纬度计算公式并不完善,还有可能是由于计算机的截断误差引起的,还要找时间继续修改、完善。
5.心得体会
这次编程自认为很简单,但真动手自己亲自编写,还是或多或少遇到了一些问题,并分析问题,最终解决问题。虽然这次作业很简单,但经过自己这样一步一步的编写出来,还是有很多收获,加强了运用VC++编写程序的能力,也充分认识到了学习VC++的重要性,更找到了自己的一些缺点与不足。
6.附录(程序源代码)
#includeiostream
#includecmath
using namespace std;
#define M_PI 3.1415926
ty
文档评论(0)