⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 diff_lbh.m

📁 diff_LBH 能对不同的大地坐标系进行互相转换(GDZ80,BJ54)
💻 M
字号:
function [LBH2] = diff_LBH(LBH1,type1,type2)

% diff_LBH 能对不同的大地坐标系进行互相转换(GDZ80,BJ54)
%  LBH1(1:n,1:3)为输入,LBH2(1:n,1:3)为输出,LBH1(1:n,2)为纬度B,
% type1是输入大地系的类型(GDZ80,BJ54),type2是输出大地系的类型
 
 
n = size(LBH1,1);

if strcmp(type1,'BJ54')
    a1 = 6378245; alpha1 = 1/298.3 ;
    e21 = 2*alpha1-alpha1^2; 
    
    XYZ01 = [3 4 5];    % 原点的坐标,用于计算椭球平移参数
elseif strcmp(type1,'GDZ80') 
        a1 = 6378140;  alpha1 = 1/298.257;
        e21 = 2*alpha1-alpha1^2;
        XYZ01 = [6 7 8];    % 原点的坐标,用于计算椭球平移参数
 end
   
  if strcmp(type2,'BJ54')   
      a2 = 6378245; alpha2 = 1/298.3 ;
      e22 = 2*alpha2-alpha2^2; 
  elseif strcmp(type2,'GDZ80')
        a2 = 6378140;  alpha2 = 1/298.257;
        e22 = 2*alpha2-alpha2^2;

  end
   
   if strcmp(type1,'BJ54')&strcmp(type2,'GDZ80')
      dxyz = [111 -95 -75];  % GDZ80-BJ54
  elseif strcmp(type1,'GDZ80')&strcmp(type2,'GDZ80')
      dxyz = [-111 95 75];
  end
  

   da = a2-a1; dalpha = alpha2-alpha1;
      
   N = a1./sqrt(1-e21.*sin(LBH1(1:n,2)).^2);   % 卯酉圈曲率半径
   M = a1*(1-e21)./sqrt((1-e21.*sin(LBH1(1:n,2)).^2).^3);  % 子午圈曲率半径
   
  for k = 1:n                   
      A(1:3,1:3) = [ -sin(LBH1(k,1))/(N(k)+LBH1(k,2))*cos(LBH1(k,2))      cos(LBH1(k,1))/((N(k)+LBH1(k,3))*cos(LBH1(k,2)))     0;
                     -sin(LBH1(k,2))*cos(LBH1(k,1))/(M(k)+LBH1(k,3))        sin(LBH1(k,2))*sin(LBH1(k,1))/(M(k)+LBH1(k,3))    cos(LBH1(k,2))/(M(k)+LBH1(k,3));
                     cos(LBH1(k,2))*cos(LBH1(k,1))           cos(LBH1(k,2))*sin(LBH1(k,1))        sin(LBH1(k,2));  ];
      B(1:3,1:2) = [ 0                         0;
                     N(k)*e21*sin(LBH1(k,2))*cos(LBH1(k,2))/(a1*(N(k)+LBH1(k,3)))      M(k)*(2-e21*sin(LBH1(k,2))^2)*sin(LBH1(k,2))*cos(LBH1(k,2))/((1-a1)*(M(k)+LBH1(k,3)));
                     -N(k)*(1-e21*sin(LBH1(k,2))^2)/a1            M(k)*(1-e21*sin(LBH1(k,2))^2)*sin(LBH1(k,2))^2/(1-a1);  ];
      dLBH(k,1:3) = ( A*dxyz'+B*[da dalpha]')' ;  %  把dLBH由列向量化为行向量。dLBH为大地坐标修正量。
      dLBH(k,1:2) = 206265.*dLBH(k,1:2);    % 将dL,dB化为以弧度秒″为单位
            
      LBH2(k,1:3) = LBH1(k,1:3)+dLBH(k,1:3);   % 将原坐标值加上坐标修正值,即为新的坐标值。
  end

  
  % 测试数据   LBH1(1:4,1)=[20;21;22;23];LBH1(1:4,2)=[20;21;22;23];LBH1(1:4,3)=[100;120;140;160];
  % type1='GDZ80',type2 = 'BJ54', [LBH2]=diff_LBH(LBH1,type1,type2)
  
      
                 
%%%%%%%%%%%%%%%%%%%%    *** last line of diff_LBH.m ***   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -