mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2025-03-04 10:38:17 +00:00
49 lines
1.5 KiB
Mathematica
49 lines
1.5 KiB
Mathematica
![]() |
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 %%%%%%%%%%%%%%%%%%%%%%%%
|