坐标系目录
大地坐标系(L,B,H)(经度,纬度,大地高)
空间直角坐标系(X,Y,Z)
子午面直角坐标系(L,x,y)(经度,x,y)
椭球常数
参考椭球常数:
a--椭球长半轴; b--椭球短半轴;
e2--椭圆第一偏心率e^2; e_dot_2 椭圆第二偏心率e'^2
用于简化书写的参数
c = a * a / b; k = 1 + e_dot_2; W = sqrt(1 - e_2 * sin(B*p) * sin(B * p));
V = sqrt(1 + e_dot_2 * cos(B * p) * cos(B * p)); N = a / W;
转换算法
具体代码实现
c#窗口程序可以前往:
https://blog.csdn.net/yitian_00/article/details/130374585
c++qt窗口程序可以前往:
①已知大地直角坐标系(L,B,H)
计算空间直角坐标系
X=(N+H)cosBcosL;
Y=(N+H)cosBsinL;
Z=[N(1-e*e)+H]sinB;
计算子午面直角坐标系
L=L;
x=X/cosL=(N+H)cosBcosL/cosL;
y=Z=[N(1-e*e)+H]sinB;
②已知子午面坐标系(L,x,y)
计算空间直角坐标系
X=xcosL;
Y=xsinL;
Z=y;
计算大地坐标系
L=L;
用上一步求得的X,Y,Z和迭代法求得B
tan0 = Z / sqrt(X *X + Y *Y);
P = c * e_2 / sqrt(X * X + Y * Y);
tanB = tan0 + P * tanB/ sqrt(k +tanB* tanB)//迭代计算
H=Z/sinB-N(1-e*e);
③已知空间直角坐标系(X,Y,Z)
计算大地坐标系
L=arctan(Y/X);
tan0 = Z / sqrt(X *X + Y *Y);
P = c * e_2 / sqrt(X * X + Y * Y);
tanB = tan0 + P * tanB/ sqrt(k +tanB* tanB)//迭代计算
H=Z/sinB-N(1-e*e);
计算子午面直角坐标系
L=arctan(Y/X);
x = X / cosL;
y = Z;