WGS84椭球面高如何计算?用c语言实现
时间: 2023-08-06 22:07:55 浏览: 86
WGS84椭球面高的计算可以通过GPS测量得到。具体的计算方法是,首先通过GPS测量得到当前位置的经度、纬度和高度信息,然后使用WGS84椭球体的参数计算出当前位置的地心距离,再将地心距离和当前位置的高度相加就得到了WGS84椭球面高。
以下是用C语言实现的代码示例:
```c
#include <math.h>
#define WGS84_A 6378137.0 // WGS84椭球体长半轴
#define WGS84_B 6356752.314245 // WGS84椭球体短半轴
#define WGS84_F (1.0 / 298.257223563) // WGS84椭球体扁率
double wgs84_ellipsoidal_height(double lat, double lon, double height) {
double sin_lat = sin(lat);
double cos_lat = cos(lat);
double sin_lon = sin(lon);
double cos_lon = cos(lon);
double N = WGS84_A / sqrt(1.0 - WGS84_F * (2.0 - WGS84_F) * sin_lat * sin_lat);
double x = (N + height) * cos_lat * cos_lon;
double y = (N + height) * cos_lat * sin_lon;
double z = (N * (1.0 - WGS84_F * WGS84_F) + height) * sin_lat;
double p = sqrt(x * x + y * y);
double lat_rad = atan2(z, p * (1.0 - WGS84_F * WGS84_F));
double Np = WGS84_A / sqrt(1.0 - WGS84_F * (2.0 - WGS84_F) * sin(lat_rad) * sin(lat_rad));
return p / cos(lat_rad) - Np;
}
```
这段代码中,`lat`为当前位置的纬度,`lon`为当前位置的经度,`height`为当前位置的高度。函数返回当前位置的WGS84椭球面高。
阅读全文