2013-10-20 8 views
5

Ich studiere pArk Apple Beispielcode, und wie es funktioniert. weiß jemand, wie die Breite und Länge in ECEF Koordinaten, und verdeckte ECEF zu ENU Koordinaten um den gegebenen Lat, Lon Funktionen sind Arbeit? Ich möchte nur verstehen, was in dieser Funktion vorgeht!Breiten- und Längengrad in ECEF Koordinatensystem konvertieren

danke.

void latLonToEcef(double lat, double lon, double alt, double *x, double *y, double *z) 
{ 
    double clat = cos(lat * DEGREES_TO_RADIANS); 
    double slat = sin(lat * DEGREES_TO_RADIANS); 
    double clon = cos(lon * DEGREES_TO_RADIANS); 
    double slon = sin(lon * DEGREES_TO_RADIANS); 

    double N = WGS84_A/sqrt(1.0 - WGS84_E * WGS84_E * slat * slat); 

    *x = (N + alt) * clat * clon; 
    *y = (N + alt) * clat * slon; 
    *z = (N * (1.0 - WGS84_E * WGS84_E) + alt) * slat; 
} 
// Coverts ECEF to ENU coordinates centered at given lat, lon 
void ecefToEnu(double lat, double lon, double x, double y, double z, double xr, double yr, double zr, double *e, double *n, double *u) 
{ 
    double clat = cos(lat * DEGREES_TO_RADIANS); 
    double slat = sin(lat * DEGREES_TO_RADIANS); 
    double clon = cos(lon * DEGREES_TO_RADIANS); 
    double slon = sin(lon * DEGREES_TO_RADIANS); 
    double dx = x - xr; 
    double dy = y - yr; 
    double dz = z - zr; 

    *e = -slon*dx + clon*dy; 
    *n = -slat*clon*dx - slat*slon*dy + clat*dz; 
    *u = clat*clon*dx + clat*slon*dy + slat*dz; 
} 

Antwort

8

latLonToEcef Die Methode ist eine Implementierung des Algorithmus in der wikipedia Seite skizziert:

geodetic to ecef

wo

Φ Breite ist, & lambda; ist Länge und

n-latitude

Ebenso ist die ecefToEnu Methode ist eine Implementierung des ECEF to ENU Algorithmus:

ECEF to ENU

Wenn Sie weitere Referenzen benötigen, können sie an der Unterseite davon finden Wikipedia-Seite. Sie können sich auch auf die World Geodetic System 1984 Spezifikation beziehen.