空间直角坐标XYZ换算为经纬度BL的matlab编程

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

空间直角坐标XYZ换算为经纬度BL程序

(matlab编程)

度分秒转弧度函数代码:

function hd=dzh(a)

hh=sign(a);

a=abs(a);

hd=hh*(fix(a)+fix((a-fix(a))*100)/60+((a-fix(a))*100-...

fix((a-fix(a))*100))*100/3600)*pi/180;%度分秒转化为弧度

end

弧度转度分秒函数代码:

function jd=hzd(x)

jd=fix(x*206264.8062470964/3600)+fix((x*206264.8062470964/3600-...

fix(x*206264.8062470964/3600))*60)/100+((x*206264.8062470964/3600-...

fix(x*206264.8062470964/3600))*60-fix((x*206264.8062470964/3600-...

fix(x*206264.8062470964/3600))*60))*60/10000;%弧度转化为度分秒

end

主程序代码:

fprintf('-----克拉索夫斯基椭球体请输入1;1975年国际椭球体请输入2;WGS 84椭球请输入3-----')

kk=input('请输入:');

if kk==1

a=6378245;%长半轴克拉索夫斯基椭球体

b=6356863.019;%短半轴

elseif kk==2

a=6378140; %长半轴 1975年国际椭球体

b=6356755.288; %短半轴

else

a=6378137;%长半轴 1975年国际椭球体

b=6356752.314; %短半轴

end

e1=sqrt(a^2-b^2)/a; %第一偏心率

c=a^2/b;

X=input('请输入X:');

Y=input('请输入Y:');

Z=input('请输入Z:');

L=atan(Y/X);%求大地经度L

B1=atan(Z/sqrt(X^2+Y^2));%求纬度初值

for i=1:+inf %设定循环,进行迭代

yita=e1*cos(B1);

V=sqrt(1+yita^2);

N1=c/V ;%%卯酉圈曲率半径

B2=atan((Z+N1*e1^2*sin(B1))/sqrt(X^2+Y^2));%迭代后的B

if abs(B2-B1)<0.00000001%如果两次相邻的B相差小于0.002秒则终止循环 break

end

B1=B2;%用新的B替换旧B

end

B=hzd(B2)%将结果转化为度分秒

L=hzd(L)

相关文档
最新文档