Python pyproj konvertieren ecef-zu Lam
Ich konvertieren wollen x/y/z-ECEF-Positionen zu lla (lat/lon/alt) mit WGS84 in python mit pyproj aber es scheint, wie die Konvertierung schlägt fehl.
Beispiel-code ist hier:
import pyproj
# Example position data, should be somewhere in Germany
x = 652954.1006
y = 4774619.7919
z = -2217647.7937
ecef = pyproj.Proj(proj='geocent', ellps='WGS84', datum='WGS84')
lla = pyproj.Proj(proj='latlong', ellps='WGS84', datum='WGS84')
lon, lat, alt = pyproj.transform(ecef, lla, x, y, z, radians=True)
print lat, lon, alt
Kann jemand sehen, wo das problem ist?
EDIT: ich denke, die Berechnungen sind korrekt, nur die Daten, die ich von meinem receiver scheint defekt sein. Kann jemand bestätigen, dass?
- Bestätigt. pyproj ist die Berechnung korrekt. Einfache Sonderfälle zu überprüfen: a) Mittelpunkt der Erde: (x, y, z) =(0,0,0), dann (lon, lat, alt) = (0, 90, -6356752.3). b) Greenwich: (x,y,z) = (6378137,0,0), dann (lon, lat, alt) = (0,0,0). Beachten Sie die oblateness der Erde berücksichtigen, pyproj.
- Beachten Sie auch, dass pyproj.transform() zurück (lon, lat, alt) anstelle von (lat,lon,alt) und Eingänge und Ausgänge sind in Meter statt der häufiger verwendeten km.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Getestet habe ich es mit meinen eigenen self-made-Koordinaten-transformation-Programm und muss sagen, die richtige Reihenfolge ist:
Ich denke, wenn die entworfen, die Bibliothek, die Sie lieber denke über die Länge als x-Achse und die Breite der y-Achse, so dass Sie es wieder in Ordnung.
Ich lieber mit Maß, so ist es einfacher für mich es zu Lesen:
Dort die Ausgabe ist:
Änderte ich den z-Wert zu erhalten ein vernünftiger Wert, die 'Nähe' der Oberfläche:
Dann bekomme ich:
Können Sie auch sehen, dass nur die latitude-Wert ändert und die Länge ist unabhängig von der z-Wert. Dies ist aufgrund der Tatsache, dass die z-Achse weist zum Nordpol.
Wenn Sie möchten, um mehr darüber zu Lesen, wie diese transformation erfolgt Blick auf diese kurze Beschreibung:
https://en.wikipedia.org/wiki/Geographic_coordinate_conversion#From_geodetic_to_ECEF_coordinates
Werden sollte :
Seit
lla = pyproj.Proj(proj='latlong', ellps='WGS84', datum='WGS84')
geben Sie dielatlong
um