WGS-84 ECEF ENU 坐标系学习记录

地球坐标系固定在地球上而随地球一起在空间做公转和自转运动,因此地球上任一固定点在地球坐标系的坐标就不会由于地球旋转而变化。地心地固直角坐标系和大地坐标系都属于这种坐标系。

一、 几种坐标系

地心地固直角坐标系(ECEF)坐标系

其原点为地球的质心,x轴延伸通过本初子午线(0度经度)和赤道(0deglatitude)的交点。 z轴延伸通过的北极(即,与地球旋转轴重合)。 y轴完成右手坐标系,穿过赤道和90度经度。

全球地理坐标系、大地坐标系(WGS-84)

可以说是最为广泛应用的一个地球坐标系,它给出一点的大地纬度、大地经度和大地高程而更加直观地告诉我们该点在地球中的位置,故又被称作纬经高坐标系。WGS-84坐标系的X轴指向BIH(国际时间服务机构)1984.0定义的零子午面(Greenwich)和协议地球极(CTP)赤道的交点。Z轴指向CTP方向。Y轴与X、Z轴构成右手坐标系。

一句话解释就是:把前面提到的ECEF坐标系用在GPS中,就是WGS-84坐标系。

其中:

        (1):大地纬度是过用户点P

以下是经纬高(WGS84坐标系ECEF坐标系换代码: ```c #include <stdio.h> #include <math.h> #define PI 3.14159265358979323846 #define a 6378137.0 // 地球长半轴 #define b 6356752.314245 // 地球短半轴 #define e ((a*a-b*b)/(a*a)) // 地球椭球体第一偏心率 void WGS84_to_ECEF(double lat, double lon, double alt, double *x, double *y, double *z) { double N = a / sqrt(1 - e*sin(lat)*sin(lat)); *x = (N + alt) * cos(lat) * cos(lon); *y = (N + alt) * cos(lat) * sin(lon); *z = (N*(1-e) + alt) * sin(lat); } int main() { double lat = 39.909187; double lon = 116.397451; double alt = 50.0; double x, y, z; WGS84_to_ECEF(lat*PI/180.0, lon*PI/180.0, alt, &x, &y, &z); printf("ECEF坐标系下的坐标为:(%lf, %lf, %lf)\n", x, y, z); return 0; } ``` 以下是ECEF坐标系ENU坐标系换代码: ```c #include <stdio.h> #include <math.h> #define PI 3.14159265358979323846 void ECEF_to_ENU(double x, double y, double z, double lat0, double lon0, double alt0, double *e, double *n, double *u) { double slat0 = sin(lat0); double clat0 = cos(lat0); double slon0 = sin(lon0); double clon0 = cos(lon0); double dx = x - (clon0*x + slon0*y); double dy = y - (-slon0*x + clon0*y); double dz = z - alt0; *e = -slon0*dx + clon0*dy; *n = -slat0*clon0*dx - slat0*slon0*dy + clat0*dz; *u = clat0*clon0*dx + clat0*slon0*dy + slat0*dz; } int main() { double x = -2339108.3; double y = 5004615.5; double z = 3224800.9; double lat0 = 39.909187*PI/180.0; double lon0 = 116.397451*PI/180.0; double alt0 = 50.0; double e, n, u; ECEF_to_ENU(x, y, z, lat0, lon0, alt0, &e, &n, &u); printf("ENU坐标系下的坐标为:(%lf, %lf, %lf)\n", e, n, u); return 0; } ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值