Conversion du système de coordonnées en ECEF et géodésique

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.

Vérification du fonctionnement de la conversion des coordonnées à l'aide de pymap3d

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.

Contrôle de fonctionnement

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

Conversion du système de coordonnées en ECEF et géodésique
Termes étroitement liés au système X Window
Expérimentons et laissons des preuves pour déterminer les spécifications.
Comment identifier le numéro d'appel système ausyscall
Essayez de simuler le mouvement du système solaire
[Mac] Un moyen très simple d'exécuter des commandes système en Python et de générer les résultats
J'ai essayé d'ajouter des appels système et des planificateurs à Linux
Comment utiliser la commande grep et des exemples fréquents
Enveloppez et encapsulez la cible de validation pour éviter les complications
[Python] Conversion de WGS84 en système de coordonnées orthogonales plan
Comment utiliser argparse et la différence entre optparse
Redimensionner l'image à la taille spécifiée et noircir les marges
Scraping Go To EAT membres magasins dans la préfecture d'Osaka et conversion au format CSV