2023年空间直角坐标系与空间大地坐标系的相互转换及其C++源程序.pdf

上传人:C****o 文档编号:91181973 上传时间:2023-05-22 格式:PDF 页数:10 大小:440.28KB
返回 下载 相关 举报
2023年空间直角坐标系与空间大地坐标系的相互转换及其C++源程序.pdf_第1页
第1页 / 共10页
2023年空间直角坐标系与空间大地坐标系的相互转换及其C++源程序.pdf_第2页
第2页 / 共10页
点击查看更多>>
资源描述

《2023年空间直角坐标系与空间大地坐标系的相互转换及其C++源程序.pdf》由会员分享,可在线阅读,更多相关《2023年空间直角坐标系与空间大地坐标系的相互转换及其C++源程序.pdf(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、学习必备 欢迎下载 空间直角坐标系与空间大地坐标系的相互转换 1.空间直角坐标系/笛卡尔坐标系 坐标轴相互正交的坐标系被称作笛卡尔坐标系。三维笛卡尔坐标系也被称为空间直角坐标系。在空间直角坐标系下,点的坐标可以用该点所对应的矢径在三个坐标轴上的投影长度来表示,只有确定了原地、三个坐标轴的指向和尺度,就定义了一个在三维空间描述点的位置的空间直角坐标系。以椭球体中心 O 为原点,起始子午面与赤道面交线为 X 轴,在赤道面上与X 轴正交的方向为 Y 轴,椭球体的旋转轴为 Z 轴构成右手坐标系 O.XYZ,在该坐标系中,P 点的位置用 X,Y,Z 表示。在测量应用中,常将地球空间直角坐标系的坐标原点选

2、在地球质心(地心坐标系)或参考椭球中心(参心坐标系),z 轴指向地球北极,x 轴指向起始子午面与地球赤道的交点,y 轴垂直于 XOZ 面并构成右手坐标系。空间直角坐标系 2.空间大地坐标系 由于空间直角坐标无法明确反映出点与地球之间的空间关系,为了解决这一问题,在测量中引入了大地基准,并据此定义了大地坐标系。大地基准指的是用于定义地球参考椭球的一系列参数,包括如下常量:2.1 椭球的大小和形状 学习必备 欢迎下载 2.2 椭球的短半轴的指向:通常与地球的平自转轴平息。2.3 椭球中心的位置:根据需要确定。若为地心椭球,则其中心位于地球质心。2.4 本初子午线:通过固定平极和经度原点的天文子午线

3、,通常为格林尼治子午线。以大地基准为基础建立的坐标系被称为大地坐标系。由于大地基准又以参考椭球为基准,因此,大地坐标系又被称为椭球坐标系。大地坐标系是参心坐标系,其坐标原点位于参考椭球中心,以参考椭球面为基准面,用大地经度 L、纬度 B和大地高 H 表示地面点位置。过地面点 P 的子午面与起始子午面间的夹角叫 P点的大地经度。由起始子午面起算,向东为正,叫东经(0180),向西为负,叫西经(0-180)。过 P 点的椭球法线与赤道面的夹角叫 P 点的大地纬度。由赤道面起算,向北为正,叫北纬(090),向南为负,叫南纬(0-90)。从地面点 P 沿椭球法线到椭球面的距离叫大地高。大地坐标坐标系中

4、,P 点的位置用 L,B 表示。如果点不在椭球面上,表示点的位置除 L,B 外,还要附加另一参数大地高 H。空间大地坐标系 3.空间直角坐标与大地坐标间的转换 3.1 大地坐标转换为空间直角坐标 对应的矢径在三个坐标轴上的投影长度来表示只有确定了原地三个坐标球体的旋转轴为轴构成右手坐标系在该坐标系中点的位置用表示在测量面并构成右手坐标系空间大地坐标系空间直角坐标系由于空间直角坐标学习必备 欢迎下载 将同一坐标系下的大地坐标(B、L、H)转换成空间直角坐标(X、Y、Z)的转换公式为:式中 N 为卯酉圈的半径,a 为参考椭球的长半轴;b 为参考椭球的短半轴;e 为参考椭球的第一偏心率;并且有 若点

5、在椭球面上,则大地高 H=0,上式可简化为:3.2 空间直角坐标转换为空间大地坐标 将同一坐标系下的空间直角坐标(X、Y、Z)转换为空间大地坐标(B、L、H)的公式为:在使用上式进行空间直角坐标到大地坐标的转换过程中,由于计算大地纬度对应的矢径在三个坐标轴上的投影长度来表示只有确定了原地三个坐标球体的旋转轴为轴构成右手坐标系在该坐标系中点的位置用表示在测量面并构成右手坐标系空间大地坐标系空间直角坐标系由于空间直角坐标学习必备 欢迎下载 口时用到大地高,而计算大地高时又需要用到大地纬度口因此不能直接由空间直角坐标计算出大地坐标,而需要采用迭代计算的方法。具体计算时,可先根据下式求出大地纬度口的初

6、值:然后利用该初值来求出H、N的初值,再利用所求出的H 和N初值再次求出B值如此反复,直至求出的及日、收敛为止。4.算例 本文根据以上公式在 Microsoft VC+6.0 环境下编写了一段程序(见附录)。算例中的坐标采用的是武汉大学信息学部友谊广场上的某点的大地坐标作为已知 值,然 后 经 过 转 换 函 数 CRDGEODETICtoCRDCARTESEAN(pcg,pcc,dSemiMajorAxis,dFlatning)把大地坐标转换为空间直角坐标得到坐标 X、Y、Z。由得到的空间直角坐标 X、Y、Z,经过转换函数 CRDCARTESIANtoCRDGEODETIC(pcc,pcg,

7、dSemiMajorAxis,dFlatning)把空间直角坐标还原成空间大地坐标,计算结果如下图所示:计算结果 对应的矢径在三个坐标轴上的投影长度来表示只有确定了原地三个坐标球体的旋转轴为轴构成右手坐标系在该坐标系中点的位置用表示在测量面并构成右手坐标系空间大地坐标系空间直角坐标系由于空间直角坐标学习必备 欢迎下载 从上图可以看出结果比较满意,高程和精度基本能完全还原,而纬度还原后有较大的误差,在测量中这种误差不允许的,需要修改算法,完善结果。可能引起的原因有可能是由于纬度计算公式并不完善,还有可能是由于计算机的截断误差引起的,还要找时间继续修改、完善。5.心得体会 这次编程自认为很简单,但

8、真动手自己亲自编写,还是或多或少遇到了一些问题,并分析问题,最终解决问题。虽然这次作业很简单,但经过自己这样一步一步的编写出来,还是有很多收获,加强了运用 VC+编写程序的能力,也充分认识到了学习 VC+的重要性,更找到了自己的一些缺点与不足。对应的矢径在三个坐标轴上的投影长度来表示只有确定了原地三个坐标球体的旋转轴为轴构成右手坐标系在该坐标系中点的位置用表示在测量面并构成右手坐标系空间大地坐标系空间直角坐标系由于空间直角坐标学习必备 欢迎下载 6.附录(程序源代码)#include#include using namespace std;#define M_PI 3.1415926 type

9、def struct tagCRDCARTESIAN double x;double y;double z;CRDCARTESIAN;typedef CRDCARTESIAN*PCRDCARTESIAN;typedef struct tagCRDGEODETIC double longitude;double latitude;double height;CRDGEODETIC;typedef CRDGEODETIC*PCRDGEODETIC;void DMS_RAD(double DMS,double*Rad)int Deg,Min;double Sec;Deg=(int)DMS;Min=(

10、int)(DMS-Deg)*100);Sec=(DMS-Deg)*100-Min)*100;*Rad=(Deg+Min/60.0+Sec/3600.0)/180.0*M_PI;return;对应的矢径在三个坐标轴上的投影长度来表示只有确定了原地三个坐标球体的旋转轴为轴构成右手坐标系在该坐标系中点的位置用表示在测量面并构成右手坐标系空间大地坐标系空间直角坐标系由于空间直角坐标学习必备 欢迎下载 void RAD_DMS(double Rad,double*DMS)int Deg,Min;double Sec;double AR,AM;AR=Rad;if(Rad0)AR=-Rad;AR=AR+1.

11、0e-10;AR=AR*180.0/M_PI;Deg=(int)AR;AM=(AR-Deg)*60.0;Min=(int)AM;Sec=(AM-Min)*60;*DMS=Deg+Min/100.0+Sec/10000.0;if(Radx;double Y=pcc-y;double Z=pcc-z;R=sqrt(X*X+Y*Y);对应的矢径在三个坐标轴上的投影长度来表示只有确定了原地三个坐标球体的旋转轴为轴构成右手坐标系在该坐标系中点的位置用表示在测量面并构成右手坐标系空间大地坐标系空间直角坐标系由于空间直角坐标学习必备 欢迎下载 B0=atan2(Z,R);while(1)N=dSemiMaj

12、orAxis/sqrt(1.0-dFlattening*(2-dFlattening)*sin(B0)*sin(B0);B_=atan2(Z+N*dFlattening*(2-dFlattening)*sin(B0),R);if(fabs(B_-B0)height=R/cos(B_)-N;RAD_DMS(B_,&pcg-latitude);RAD_DMS(L_,&pcg-longitude);return true;bool CRDGEODETICtoCRDCARTESEAN(PCRDGEODETIC pcg,PCRDCARTESIAN pcc,double dSemiMajorAxis,do

13、uble dFlattening)double N;double B_,L_;double B=pcg-latitude;double L=pcg-longitude;double H=pcg-height;DMS_RAD(B,&B_);DMS_RAD(L,&L_);对应的矢径在三个坐标轴上的投影长度来表示只有确定了原地三个坐标球体的旋转轴为轴构成右手坐标系在该坐标系中点的位置用表示在测量面并构成右手坐标系空间大地坐标系空间直角坐标系由于空间直角坐标学习必备 欢迎下载 N=dSemiMajorAxis/sqrt(1.0-dFlattening*(2-dFlattening)*sin(B_)*s

14、in(B_);pcc-x=(N+H)*cos(B_)*cos(L_);pcc-y=(N+H)*cos(B_)*sin(L_);pcc-z=(N*(1.0-dFlattening*(2-dFlattening)+H)*sin(B_);return true;void main()PCRDCARTESIAN pcc=new CRDCARTESIAN;PCRDGEODETIC pcg=new CRDGEODETIC;/B=30.31.40.23 L=114.21.20.51 h=41 double rad;rad=(30*3600+31*60+40.23)/3600;pcg-latitude=rad

15、;rad=(114*3600+21*60+20.51)/3600;pcg-height=41;pcg-longitude=rad;double dSemiMajorAxis=6378137;double dFlatning=1/298.257223563;coutstd:fixed;cout转换前已知的大地坐标:endl;coutH(高度)=height L(经度)=longitude B(纬度)=latitudeendl;CRDGEODETICtoCRDCARTESEAN(pcg,pcc,dSemiMajorAxis,dFlatning);对应的矢径在三个坐标轴上的投影长度来表示只有确定了原

16、地三个坐标球体的旋转轴为轴构成右手坐标系在该坐标系中点的位置用表示在测量面并构成右手坐标系空间大地坐标系空间直角坐标系由于空间直角坐标学习必备 欢迎下载 coutendl;cout转换后的空间直角坐标:;coutx=x y=y z=z endl;CRDCARTESIANtoCRDGEODETIC(pcc,pcg,dSemiMajorAxis,dFlatning);coutendl;cout由转换后的空间直角坐标 x,y,z 还原成大地坐标:endl;coutH(高度)=height L(经度)=longitude B(纬度)=latitudeendl;coutendl;对应的矢径在三个坐标轴上的投影长度来表示只有确定了原地三个坐标球体的旋转轴为轴构成右手坐标系在该坐标系中点的位置用表示在测量面并构成右手坐标系空间大地坐标系空间直角坐标系由于空间直角坐标

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

当前位置:首页 > 教育专区 > 高中资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁