c++BLH转换XYZ
时间: 2023-08-04 19:13:37 浏览: 166
BLH与XYZ的转换
5星 · 资源好评率100%
BLH(大地坐标系)指的是经度、纬度和高程,XYZ(直角坐标系)指的是空间直角坐标系中的X、Y、Z坐标。下面是C++代码示例,实现BLH转XYZ的计算:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
const double PI = 3.14159265358979323846;
const double a = 6378137.0; // WGS84椭球长半轴
const double b = 6356752.3142; // WGS84椭球短半轴
const double f = 1 / 298.257223563; // WGS84椭球扁率
double rad(double d) {
return d * PI / 180.0;
}
void BLH2XYZ(double B, double L, double H, double& X, double& Y, double& Z) {
double e2 = f * (2 - f);
double N = a / sqrt(1 - e2 * sin(rad(B)) * sin(rad(B)));
X = (N + H) * cos(rad(B)) * cos(rad(L));
Y = (N + H) * cos(rad(B)) * sin(rad(L));
Z = (N * (1 - e2) + H) * sin(rad(B));
}
int main() {
double B = 31.2304; // 纬度
double L = 121.4737; // 经度
double H = 10; // 高程
double X, Y, Z;
BLH2XYZ(B, L, H, X, Y, Z);
cout << "X: " << X << ", Y: " << Y << ", Z: " << Z << endl;
return 0;
}
```
在上面的代码中,BLH2XYZ函数接收经度、纬度和高程三个参数,计算出对应的X、Y、Z坐标,分别存储到X、Y、Z变量中。最后,通过cout语句输出结果。
阅读全文