地球坐标系的各坐标系的转换算法

坐标系目录

大地坐标系(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窗口程序可以前往:

地固坐标系各坐标系的转换_进击中的小龙的博客-CSDN博客

①已知大地直角坐标系(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;

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值