资源简介
以克拉索夫斯基椭球参数为例,由B、L、H三参数正算得到空间坐标系,再由得到的空间坐标系反算得到大地坐标系并计算出误差,检核误差是否在范围内。
代码片段和文件信息
clc;clear;
%克拉索夫斯基
a=6378245; b=6356863.0187730473; e2=0.006693421622966;fprintf(‘%s\n‘‘克拉索夫斯基‘)
fprintf(‘%s\n‘‘正算得到的空间坐标系:‘)
B=(-83.79970551/360)*2*pi;
L=(-85.33033757/360)*2*pi;
H=-270.410;e=e2^(1/2);W=(1-e^2*sin(B)^2)^(1/2);N=a/W;
X=(N+H)*cos(B)*cos(L);
Y=(N+H)*cos(B)*sin(L);
Z=(N*(1-e2)+H)*sin(B);
M=a-(X*X+Y*Y+Z*Z)^(1/2);
P=[X;Y;Z]
%反算
fprintf(‘%s\n‘‘由上一步所得空间坐标系反算大地坐标系:‘)
NL=atan2(YX);i=1;
B1=atan2(Z((X^2+Y^2)^(1/2)));CB=1;
while CB>10^-9
N=a/((1-(e2)*(sin(B1)^2))^(1/2)) ;
B2=atan2((Z+N*(e2)*sin(B1))(X^2+Y^2)^(1/2));
CB=abs(B2-B1);
B1=B2;
end
NB=B2;
NN=a/((1-(e2)*(sin(NB)^2))^(1/2)) ;
NH=Z/sin(NB)-NN*(1-e2);
LBH=[NL/pi*180;NB/pi*180;NH]
fprintf(‘%s\n‘‘反算误差为:‘)
derta=[(L-NL)/pi*180;(B-NB)/pi*180;H-NH]
评论
共有 条评论