坐标转换源代码--GPS定位程序(C--)_第1页
坐标转换源代码--GPS定位程序(C--)_第2页
坐标转换源代码--GPS定位程序(C--)_第3页
坐标转换源代码--GPS定位程序(C--)_第4页
坐标转换源代码--GPS定位程序(C--)_第5页
全文预览已结束

下载本文档

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

文档简介

坐标转换源代码-GPS定位程序(C+) GPS数据处理中为了满足不同的需要,处理的数据要进行坐标转换,得到在不同坐标系统下的结果,下面是笛卡尔坐标系,大地坐标系,站心地平坐标系(线型和极坐标形式)之间的转换源代码:头文件:#ifndef _COORDCOVERT_H#define _COORDCOVERT_H#include stdlib.h/WGS-84椭球体参数const double a=.0;/长半轴const double flattening=1/298.;/扁率const double delta=0.;typedef struct tagCRDCARTESIANdouble x;double y;double z;CRDCARTESIAN;typedef CRDCARTESIAN *PCRDCARTESIAN;/笛卡尔坐标系typedef struct tagCRDGEODETICdouble longitude;double latitude;double height;CRDGEODETIC;typedef CRDGEODETIC *PCRDGEODETIC;/大地坐标系typedef struct tagCRDTOPOCENTRICdouble northing;double easting;double upping;CRDTOPOCENTRIC;typedef CRDTOPOCENTRIC *PCRDTOPOCENTRIC;/站心地平坐标系(线坐标形式)typedef struct tagCRDTOPOCENTRICPOLARdouble range;double azimuth;double elevation;CRDTOPOCENTRICPOLAR;typedef CRDTOPOCENTRICPOLAR *PCRDTOPOCENTRICPOLAR;/站心地平坐标系(极坐标形式)/由笛卡尔坐标转换为大地坐标void CartesianToGeodetic (PCRDGEODETIC pcg, PCRDCARTESIAN pcc,double dSemiMajorAxis, double dFlattening);/pcg:指向所转换出的大地坐标的指针;/pcc:指向待转换的笛卡尔坐标的指针;/dSemiMajorAxis:参考椭球的长半轴;/dFlattening:参考椭球的扁率。/由大地坐标转换为笛卡尔坐标void GeodeticToCartesian (PCRDCARTESIAN pcc, PCRDGEODETIC pcg,double dSemiMajorAxis, double dFlattening);/pcc:指向所转换出的笛卡尔坐标的指针;/pcg:指向待转换的大地坐标的指针;/dSemiMajorAxis:参考椭球的长半轴;/dFlattening:参考椭球的扁率。/由笛卡尔坐标转换为站心地平坐标void CartesianToTopocentric (PCRDTOPOCENTRIC pct,PCRDCARTESIAN pcc,PCRDCARTESIAN pccCenter,double dSemiMajorAxis,double dFlattening);/pct:指向所转换出的站心地平坐标的指针;/pcc:指向待转换的笛卡尔坐标的指针;/pccCenter:指向站心的笛卡尔坐标的指针;/dSemiMajorAxis:参考椭球的长半轴;/dFlattening:参考椭球的扁率。/由站心地平直角坐标转换为站心地平极坐标void TopocentricToTopocentricPolar (PCRDTOPOCENTRICPOLAR pctp,PCRDTOPOCENTRIC pct);/pctp:指向所转换出的站心地平极坐标的指针;/pct:指向待转换的站心地平坐标的指针;/由站心地平极坐标转换为站心地平直角坐标void TopocentricPolarToTopocentric (PCRDTOPOCENTRIC pct,PCRDTOPOCENTRICPOLAR pctp);/pct:指向所转换的站心地平坐标的指针;/pctp:指向待转换的站心地平极坐标的指针;#endif 源文件:#include CoordCovert.h#include math.hvoid CartesianToGeodetic (PCRDGEODETIC pcg, PCRDCARTESIAN pcc,double dSemiMajorAxis, double dFlattening)double e2;/第一偏心率的平方e2=2*dFlattening-dFlattening*dFlattening;pcg-longitude=atan(pcc-y/pcc-x);double W,N,N1=0,B,B1;B1=atan(pcc-z/sqrt(pcc-x*pcc-x+pcc-y*pcc-y);while(1) W=sqrt(1-e2*sin(B1)*sin(B1); N1=dSemiMajorAxis/W; B=atan(pcc-z+N1*e2*sin(B1)/sqrt(pcc-x*pcc-x+pcc-y*pcc-y); if(fabs(B-B1)latitude=B;N=dSemiMajorAxis/sqrt(1-e2*sin(pcg-latitude)*sin(pcg-latitude);pcg-height=sqrt(pcc-x*pcc-x+pcc-y*pcc-y)/cos(B)-N; /由大地坐标转换为笛卡尔坐标void GeodeticToCartesian (PCRDCARTESIAN pcc, PCRDGEODETIC pcg,double dSemiMajorAxis, double dFlattening) double e2;/第一偏心率的平方double N;/卯酉圈半径e2=2*dFlattening-dFlattening*dFlattening;N=dSemiMajorAxis/sqrt(1-e2*sin(pcg-latitude)*sin(pcg-latitude);pcc-x=(N+pcg-height)*cos(pcg-latitude)*cos(pcg-longitude);pcc-y=(N+pcg-height)*cos(pcg-latitude)*sin(pcg-longitude);pcc-z=(N*(1-e2)+pcg-height)*sin(pcg-latitude);/由笛卡尔坐标转换为站心地平坐标void CartesianToTopocentric (PCRDTOPOCENTRIC pct,PCRDCARTESIAN pcc,PCRDCARTESIAN pccCenter,double dSemiMajorAxis,double dFlattening)double dx,dy,dz;dx=pcc-x-pccCenter-x;dy=pcc-y-pccCenter-y;dz=pcc-z-pccCenter-z;PCRDGEODETIC pd;pd=(PCRDGEODETIC)malloc(sizeof(CRDGEODETIC); CartesianToGeodetic (pd,pccCenter,dSemiMajorAxis,dFlattening);pct-northing=-sin(pd-latitude)*cos(pd-longitude)*dx -sin(pd-latitude)*sin(pd-longitude)*dy +cos(pd-latitude)*dz;pct-easting=-sin(pd-longitude)*dx +cos(pd-longitude)*dy;pct-upping=cos(pd-latitude)*cos(pd-longitude)*dx +cos(pd-latitude)*sin(pd-longitude)*dy +sin(pd-latitude)*dz;free(pd);/由站心地平直角坐标转换为站心地平极坐标void TopocentricToTopocentricPolar (PCRDTOPOCENTRICPOLAR pctp,PCRDTOPOCENTRIC pct) pctp-range=sqrt(pct-northing*pct-northing+pct-easting*pct-easting+pct-upping*pct-upping);pctp-azimuth=atan(pct-easting/pct-northing);pctp-elevation=asin(pct-upping/pctp-range);/由站心地平极坐标转换为站心地平直角坐标void TopocentricPolarToTopocentric (PCRDTOPOCENTRI

温馨提示

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

评论

0/150

提交评论