Bei der Durchführung von Satellitenpositionsberechnungen wie GPS zur Darstellung der Position auf der Erde
--XYZ orthogonales Koordinatensystem definiert durch ECEF (erdzentriert erdfeste)
Zwei werden verwendet. Die Höhe, die in vertikaler Richtung von der sphärischen Oberfläche berechnet wird, wenn die Erde als Ellipse modelliert wird, wird als "elliptische Höhe" bezeichnet, und die Höhe vom Geoid (entsprechend dem durchschnittlichen Meeresspiegel) wird als Höhe bezeichnet.
Es gibt viele Referenzmaterialien,
Und so weiter.
Mein Onkel benutzte früher die Bibliothek, die er selbst implementiert hatte, aber als ich sie heute sah, fand ich eine Python-Bibliothek, also werde ich sie mir notieren.
pymap3d
Die gewünschte Koordinatentransformationsfunktion finden Sie in `` `pymap3d.ecef.ecef2gedetic```. Wie der Name schon sagt.
Der Koordinatenwert von Tsukuba 1 des elektronischen Referenzpunkts wird verwendet.
from math import isclose
from pytest import approx
from pymap3d.ecef import ecef2geodetic
def test_ecef2geodetic():
x_ecef = [-3957162.4119, 3310203.4927, 3737752.2980]
x_geod = [36.106112803, 140.08720184, 70.336]
x_geod_from_ecef = ecef2geodetic(x_ecef[0], x_ecef[1], x_ecef[2])
print( "x_geod_from_ecef=", x_geod_from_ecef)
print( "x_geod=", x_geod)
assert x_geod[0] == approx( x_geod_from_ecef[0] )
assert x_geod[1] == approx( x_geod_from_ecef[1] )
assert isclose(x_geod[2], x_geod_from_ecef[2], rel_tol=0.01)
Wenn ich `` `pytest --capture = no -v``` mache, erscheint aus irgendeinem Grund eine Warnung, die aber in Ordnung war.
x_geod_from_ecef= (36.10611280179599, 140.08720184317684, 70.33612007893962)
x_geod= [36.106112803, 140.08720184, 70.336]
PASSED
Ich werde dies von nun an empfehlen.
Recommended Posts