Lors de l'exécution de calculs de positionnement par satellite tels que le GPS, pour représenter la position sur terre
Deux sont utilisés. La hauteur calculée dans la direction verticale à partir de la surface sphérique lorsque la terre est modélisée comme une ellipse est appelée «hauteur elliptique» et la hauteur du géoïde (correspondant au niveau moyen de la mer) est appelée altitude.
Il existe de nombreux matériaux de référence,
Etc.
Mon oncle utilisait la bibliothèque qu'il a implémentée lui-même, mais quand je l'ai vue aujourd'hui, j'ai trouvé une bibliothèque python, donc je vais en prendre note.
pymap3d
--Source disponible sur https://github.com/geospace-code/pymap3d
La fonction de transformation de coordonnées souhaitée se trouve dans
pymap3d.ecef.ecef2gedetic '' ``. Comme le nom le suggère.
La valeur de coordonnée de Tsukuba 1 du point de référence électronique est utilisée.
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)
Quand je fais `` pytest --capture = no -v '', un avertissement apparaît pour une raison quelconque, mais c'était OK.
x_geod_from_ecef= (36.10611280179599, 140.08720184317684, 70.33612007893962)
x_geod= [36.106112803, 140.08720184, 70.336]
PASSED
Je recommanderai ceci à partir de maintenant.
Recommended Posts