📄 dadi_zhijiao.m
字号:
function [XYZ]=dadi_zhijiao(BLH,type) % 大地系(经纬高)---直角系(XYZ)
% dadi_zhijiao将大地坐标系(degree, WGS,BJ54 ,GDZ80)(经纬高)转换为直角坐标系(XYZ)
% BLH(1:n,1:3) 为经纬高 (degree, WGS,BJ54 ,GDZ80)--------XYZ
% B 纬度,L 经度,H 高度
% type = 'WGS' or 'BJ54' or 'GDZ80'
n = size(BLH,1);
BLH(1:n,1) = BLH(1:n,1).*pi/180; % 纬度从°转换为弧度
BLH(1:n,2) = BLH(1:n,2).*pi/180;
XYZ(1:n,1:3)=0;
if strcmp(type,'WGS') % 如果是输入WGS-84的经纬高值
a_WGS = 6378137; alpha_WGS = 1/298.257223563; % alpha为扁率,e2是偏心率的平方,
e2_WGS = 2*alpha_WGS-alpha_WGS^2;
N_WGS = a_WGS./sqrt(1-e2_WGS.*sin(BLH(1:n,1)).^2); % N为卯酉圈的曲率半径
XYZ(1:n,1) = (N_WGS+BLH(1:n,3)).*cos(BLH(1:n,1)).*cos(BLH(1:n,2)) ;
XYZ(1:n,2) = (N_WGS+BLH(1:n,3)).*cos(BLH(1:n,1)).*sin(BLH(1:n,2));
XYZ(1:n,3) = [N_WGS.*(1-e2_WGS)+BLH(1:n,3)].*sin(BLH(1:n,1));
elseif strcmp(type,'BJ54') % 如果是输入BJ54的经纬高值
a_BJ54 = 6378245; alpha_BJ54 = 1/298.3 ;
e2_BJ54 = 2*alpha_BJ54-alpha_BJ54^2;
N_BJ54 = a_BJ54./sqrt(1-e2_BJ54.*sin(BLH(1:n,1)).^2); % N_BJ54为卯酉圈的曲率半径
XYZ(1:n,1) = (N_BJ54+BLH(1:n,3)).*cos(BLH(1:n,1)).*cos(BLH(1:n,2)) ;
XYZ(1:n,2) = (N_BJ54+BLH(1:n,3)).*cos(BLH(1:n,1)).*sin(BLH(1:n,2));
XYZ(1:n,3) = [N_BJ54.*(1-e2_BJ54)+BLH(1:n,3)].*sin(BLH(1:n,1));
else strcmp(type,'GDZ80')
a_GDZ80 = 6378140; alpha_GDZ80 = 1/298.257;
e2_GDZ80 = 2*alpha_GDZ80-alpha_GDZ80^2;
N_GDZ80 = a_GDZ80./sqrt(1-e2_GDZ80.*sin(BLH(1:n,1)).^2); % N_GDZ80为卯酉圈的曲率半径
XYZ(1:n,1) = (N_GDZ80+BLH(1:n,3)).*cos(BLH(1:n,1)).*cos(BLH(1:n,2)) ;
XYZ(1:n,2) = (N_GDZ80+BLH(1:n,3)).*cos(BLH(1:n,1)).*sin(BLH(1:n,2));
XYZ(1:n,3) = [N_GDZ80.*(1-e2_GDZ80)+BLH(1:n,3)].*sin(BLH(1:n,1));
end
% %%%%%%%%%%%%%%%%%%%%%%%%%%*** last line of dadi_zhijiao.m ***%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% BLH = [0 0 0;1 2 3];type = 'WGS',XYZ=dadi_zhijiao(BLH,type)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -