1.大地坐标系(φ,λ,h)转成ECEF(x,y,z)
x=(N+h)cos∅ cosλ
y=(N+h)cos∅ sinλ
z=[N(1-e^2 )+h]sin∅
其中N是基准椭球体的卯酉圆曲率半径,e为椭球偏心率。
#define FE_WGS84 (1.0/298.257223563) /* earth flattening (WGS84) */
#define RE_WGS84 6378137.0 /* earth semimajor axis (WGS84) (m) */
/* transform geodetic to ecef position -----------------------------------------
* transform geodetic position to ecef position
* args : double *pos I geodetic position {lat,lon,h} (rad,m)
* double *r O ecef position {x,y,z} (m)
* return : none
* notes : WGS84, ellipsoidal height
*-----------------------------------------------------------------------------*/
extern void pos2ecef(const double *pos, double *r)
{
double sinp=sin(pos[0]),cosp=cos(pos[0]),sinl=sin(pos[1]),cosl=cos(pos[1]);
double e2=FE_WGS84*(2.0-FE_WGS84),v=RE_WGS84/sqrt(1.0-e2*sinp*sinp);
r[0]=(v+pos[2])*cosp*cosl;
r[1]=(v+pos[2])*cosp*sinl;
r[2]=(v*(1.0-e2)+pos[2])*sinp;
}