www.pudn.com > GNSS_SDR.zip > geo2cart.m, change:2006-08-22,size:1543b


function [X, Y, Z] = geo2cart(phi, lambda, h, i) 
%GEO2CART Conversion of geographical coordinates (phi, lambda, h) to 
%Cartesian coordinates (X, Y, Z).  
% 
%[X, Y, Z] = geo2cart(phi, lambda, h, i); 
% 
%Format for phi and lambda: [degrees minutes seconds]. 
%h, X, Y, and Z are in meters. 
% 
%Choices i of Reference Ellipsoid 
%   1. International Ellipsoid 1924 
%   2. International Ellipsoid 1967 
%   3. World Geodetic System 1972 
%   4. Geodetic Reference System 1980 
%   5. World Geodetic System 1984 
% 
%   Inputs: 
%       phi       - geocentric latitude (format [degrees minutes seconds]) 
%       lambda    - geocentric longitude (format [degrees minutes seconds])  
%       h         - height 
%       i         - reference ellipsoid type 
% 
%   Outputs: 
%       X, Y, Z   - Cartesian coordinates (meters) 
 
%Kai Borre 10-13-98 
%Copyright (c) by Kai Borre 
% 
% CVS record: 
% $Id: geo2cart.m,v 1.1.2.7 2006/08/22 13:45:59 dpl Exp $ 
%========================================================================== 
 
b   = phi(1) + phi(2)/60 + phi(3)/3600; 
b   = b*pi / 180; 
l   = lambda(1) + lambda(2)/60 + lambda(3)/3600; 
l   = l*pi / 180; 
 
a   = [6378388 6378160 6378135 6378137 6378137]; 
f   = [1/297 1/298.247 1/298.26 1/298.257222101 1/298.257223563]; 
 
ex2 = (2-f(i))*f(i) / ((1-f(i))^2); 
c   = a(i) * sqrt(1+ex2); 
N   = c / sqrt(1 + ex2*cos(b)^2); 
 
X   = (N+h) * cos(b) * cos(l); 
Y   = (N+h) * cos(b) * sin(l); 
Z   = ((1-f(i))^2*N + h) * sin(b); 
%%%%%%%%%%%%%% end geo2cart.m  %%%%%%%%%%%%%%%%%%%%%%%%