If you wish to contribute or participate in the discussions about articles you are invited to join Navipedia as a registered user

Ellipsoidal and Cartesian Coordinates Conversion

From Navipedia

Jump to: navigation, search

Title Ellipsoidal and Cartesian Coordinates Conversion
Author(s) J. Sanz Subirana, J.M. Juan Zornoza and M. Hernández-Pajares, Technical University of Catalonia, Spain.
Level Advanced
Year of Publication 2011

The (x,y,z) ECEF cartesian coordinates can be expressed in the ellipsoidal coordinates (\varphi, \lambda, h), where \varphi and λ are, respectively, the latitude and longitude from the ellipsoid, and h the height above it. Figure 1 illustrates the relation between Cartesian and ellipsoidal coordinates.

Figure 1: Cartesian (x,y,z) and ellipsoidal (\varphi, \lambda, h) coordinates

From Ellipsoidal to Cartesian coordinates

The Cartesian coordinates of a point (x,y,z) can be obtained from the ellipsoidal coordinates (\varphi, \lambda, h) by the next expressions:

x=(N+h) \cos \varphi\,\cos \lambda\\
y=(N+h)\cos \varphi\,\sin \lambda\\
z=\left ((1-e^2)N+h \right)\sin \varphi\\
\qquad \mbox{(1)}

where N is the radius of curvature in the prime vertical:

N=\displaystyle \frac{a}{\sqrt{1-e^2\sin^2\varphi}}
\qquad \mbox{(2)}

and where the eccentricity e is related with the semi-major axis a, the semi-minor axis b and the flattening factor f = 1 -\frac{b}{a} by:

e^2=\displaystyle \frac{a^2-b^2}{a^2}=2f-f^2
\qquad \mbox{(3)}

From Cartesian to Ellipsoidal coordinates

The ellipsoidal coordinates of a point (\varphi, \lambda, h) can be obtained from the cartesian coordinates (x,y,z) as follows:

The longitude λ is given by: 
\lambda= \arctan\frac{y}{x}
\qquad \mbox{(4)}

The latitude is computed by an iterative procedure.

1. The initial value is given by:

\varphi_{(0)}=\arctan\left [ \frac{z}{(1-e^2)\,p} \right ]
\qquad \mbox{(5)}

with p=\sqrt{x^2+y^2}.

2. Improved values of \varphi, as well as the height h, are computed iterating in the equations:

N_{{(i)}}= \frac{a}{\sqrt{1-e^2\sin^2\varphi_{_{(i-1)}}}}\\[0.6cm]
h_{{(i)}}=\frac{p}{\cos \varphi_{_{(i-1)}}}-N_{(i)}\\[0.5cm]
\varphi_{{(i)}}= \arctan\left [ \frac{z}{ \left ( 1 - e^2\frac{N_{(i)}}{N_{(i)}+h_{(i)}} \right ) p } \right ]
\qquad \mbox{(6)}

The iterations are repeated until the change between two successive values of \varphi_{(i)} are smaller than the precision required.
Personal tools
Work in progress