📄 ll2mtu.m
字号:
function [x, y, k] = ll2mtu (phi0, lambda0, phi, lambda)
%
% LL2MTU: transformation des coordonnees spheriques de position en
% coordonnees cartesiennes par une projection Mercator
% transverse de l'ellipsoide de Clarke (1866).
%
% [x, y, k] = ll2mtu (phi0, lambda0, phi, lambda)
%
% x premiere coordonnee cartesienne
% y seconde coordonnee cartesienne
% k facteur de deformation relative tout
% au long du parallele de latitude phi
% phi0 latitude a l'origine des coordonnees cartesiennes
% lambda0 longitude a l'origine des coordonnees
% cartesiennes correspondant au meridien
% central de la projection
% phi latitude du parallele de la coordonnee spherique
% lambda longitude du meridien de la coordonnee spherique
%
% Pierre VINET
% Departement d'oceanographie
% Universite du Quebec a Rimouski
% 310 allee des Ursulines, Rimouski, Quebec, G5L 3A1
% (418)723-1986 p_vinet@uqar.uquebec.ca
%
% ref : SNYDER, J. P. (1987). Map Projections- A Working Manual,
% U. S. Geological Survey professionnal paper 1395,
% Washington, 383 pages.
%
%-- Conversion des angles en radians
phi0 = deg2rad(phi0);
lambda0 = deg2rad(lambda0);
phi = deg2rad(phi);
lambda = deg2rad(lambda);
%
%-- Ellipsoide de Clarke (1866); cf: table 1, page 12.
a = 6378206.4; % Rayon terrestre equatorial
b = 6356583.8; % Rayon terrestre polaire
% f = (1./294.98); % Applatissement
e2 = 0.006768658; % Carre de l'excentricite; page 13.
e4 = e2.*e2;
e6 = e4.*e2;
%
%-- Facteur de deformation au meridien central de longitude phi0
% lors d'une projection MTU
k0 = 0.9996; % page 61.
%
%-- Distance vraie de l'equateur a la latitude phi1
% le long du meridien central lambda0; eq. 3-21
phi1 = phi;
M = a.*((1 - (e2./4) - (3./64).*e4 - (5./256).*e6).*phi1 ...
- ((3./8).*e2 + (3./32).*e4 + (45./1024).*e6).*sin(2.*phi1) ...
+ ((15./256).*e4 + (45./1024).*e6).*sin(4.*phi1) ...
- ((35./3072).*e6).*sin(6.*phi1));
phi1 = phi0;
M0 = a.*((1 - (e2./4) - (3./64).*e4 - (5./256).*e6).*phi1 ...
- ((3./8).*e2 + (3./32).*e4 + (45./1024).*e6).*sin(2.*phi1) ...
+ ((15./256).*e4 + (45./1024).*e6).*sin(4.*phi1) ...
- ((35./3072).*e6).*sin(6.*phi1));
%
%-- Cas des poles
pis2 = pi./2;
if phi == pis2 | phi == -pis2,
x = 0;
y = k0.*(M - M0);
k = k0;
return
end
%
ep2 = e2./(1-e2); % eq. 8-12
N = a./((1 - (e2.*(sin(phi).^2))).^0.5); % eq. 4-20
%
T = tan(phi).^2; % eq. 8-13
T2 = T.*T;
%
C = ep2.*(cos(phi).^2); % eq. 8-14
C2 = C.*C;
%
A = (lambda - lambda0).*cos(phi); % eq. 8-15
A2 = A.*A;
A3 = A2.*A;
A4 = A3.*A;
A5 = A4.*A;
A6 = A5.*A;
%
%-- Developpement en serie pour x, y, k; eqs 8-9, 8-10 et 8-11.
x = k0.*N.*(A + (1 - T + C).*A3./6 ...
+ (5 - 18.*T + T2 +72.*C - 58.*ep2).*A5./120);
y = k0.*(M - M0 + N.*tan(phi).* ...
(A2./2 + (5 - T + 9.*C + 4.*C2).*A4./24 ...
+ (61 - 58.*T + T2 + 600.*C - 330.*ep2).*A6./720));
k = k0.*(1 + (1 + C).*A2./2 ...
+ (5 - 4.*T + 42.*C + 13.*C2 - 28.*ep2).*A4./24 ...
+ (61 - 148.*T + 16.*T2).*A6./720);
%
return
% end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -