[PYTHON] Convertir la latitude, la longitude et l'altitude GPS en coordonnées orthogonales tridimensionnelles

Il existe de nombreuses situations dans lesquelles vous souhaitez convertir la latitude et la longitude en une position dans le système de coordonnées orthogonales, ou pour obtenir une distance linéaire de la latitude et de la longitude ** (non).

En fait, je pense que beaucoup d'autres personnes ont écrit ce genre d'article. Cependant, je pense que le système de coordonnées que vous souhaitez utiliser peut différer selon l'application. Cela dit, j'ai appris à convertir en un système de coordonnées orthogonales tridimensionnelles non mobiles ** avec le centre de gravité de la Terre comme origine, je voudrais donc le résumer ici avec le sens d'un mémorandum.

C'est un peu à propos, donc si vous avez des suggestions en cours de route, s'il vous plaît.

À propos de la représentation de la latitude et de la longitude

Tout d'abord, je voudrais aborder l'expression de la latitude et de la longitude comme prémisse. Les deux types d'expressions suivants sont principalement utilisés pour décrire la latitude et la longitude. Attention à ne pas le confondre.

Notation en degrés, minutes et secondes

Un format tel que 135 ° 12'34.56" en notation 60-aire. C'est celui que vous entendez souvent. Il est lu comme "135 degrés 12 minutes 34 secondes 56".

Il peut être écrit "135 ° 12'34" 56 "ou lire" 135 ° 12 minutes 34,56 secondes ". Ensuite, il semble qu'il puisse s'écrire "1351234.56" ou "135.12.34.56". Personnellement, c'est un mot de ** s'il vous plaît arrêtez parce que c'est vraiment déroutant **, mais vous pouvez le distinguer de la notation décimale suivante par la façon dont le point est attaché.

Notation de refus

Comme son nom l'indique, il s'agit d'une notation en notation décimale, telle que «135.2096». Les parties "minute" et "seconde" sont représentées par un petit nombre de "degrés". Le "135 ° 12'34.56" "dans l'exemple ci-dessus est

135 + (12 / 60) + (34.56 / 3600)

Est converti en notation décimale de «135.2096». La lecture est "135,2096 degrés".

Certaines notations en degrés, minutes et secondes ressemblent beaucoup à la notation décimale, mais vous pouvez voir que ** vous pouvez dire laquelle vous utilisez en regardant la façon dont les points décimaux sont ajoutés **.

À propos des coordonnées à obtenir ici

Cet article explique comment convertir les informations de latitude et de longitude mesurées par GPS en une position dans un système de coordonnées tridimensionnel absolu. Le point important est qu'il explique ** la procédure pour obtenir uniquement des coordonnées tridimensionnelles **.

En d'autres termes, ce que je veux dire, c'est ** peu importe si la terre est réellement là **. Même si vous obtenez les coordonnées de deux points arbitraires par cette méthode, même si vous trouvez la distance entre ces deux points, ce sera ** une distance en ligne droite à travers la terre **. C'est pourquoi la méthode de cet article est utile lorsque l'on pense aux avions et aux engins spatiaux (car ils ne se déplacent pas le long de la surface de la Terre).

Lorsque l'on pense aux bâtiments et aux automobiles au sol, par exemple, ** une méthode pour obtenir les coordonnées bidimensionnelles d'un certain point à partir d'un point arbitraire (et considérer l'aspect de la terre) ** est utile. Cet article est très utile.

Implémentation de la conversion mutuelle entre la latitude et la longitude et les coordonnées orthogonales du plan en Python --Qiita

Qu'est-ce que le système de coordonnées WGS-84?

Le calcul utilisé cette fois est un système de coordonnées orthogonales tridimensionnelles appelé ** WGS-84 ** utilisé par les satellites GPS. C'est une sorte de système de coordonnées orthogonales fixes terrestres dont l'origine est le centre de gravité de la Terre. Cela signifie ** tourner avec la terre **. Les paramètres de l'ellipse compatible WGS-84 sont indiqués ci-dessous ... Je pensais que oui, mais si nécessaire, veuillez google chacun.

Comment demander

Tout d'abord, placez les variables comme indiqué dans la figure ci-dessous. Les gens qui proposent ce genre de choses sont incroyables. Latitude φ, Longitude λ, Hauteur de l'ellipse h, Coordonnées du point Px, y, z. L'ellipse centrale est la terre. Le GPS utilise WGS-84 pour cette ellipse.

** Modifié le 01.04.2020 ** Les traductions anglaises de la hauteur et de l'altitude du corps elliptique peuvent varier, je les ai donc supprimées. Nous vous serions reconnaissants si vous pouviez commenter si vous avez des connaissances.

Supplément: Quelle est la hauteur du corps elliptique?

Comme son nom l'indique, c'est la ** altitude mesurée à partir de la surface de l'ellipse ** qui ressemble à la terre. L'altitude renvoyée par le GPS est la hauteur de cet ellipsoïde. Il convient de noter ici que la hauteur du corps elliptique est souvent appelée ** différente de l'altitude . L'altitude est ** l'altitude mesurée à partir du niveau moyen de la mer. La ligne qui prolonge le niveau moyen de la mer jusqu'à la terre est appelée un géoïde, et l ' altitude ** est la distance entre la cible et le géoïde. Et la distance entre l'ellipse et le géoïde est appelée ** hauteur du géoïde **. En d'autres termes, ** la hauteur du corps elliptique peut être exprimée par la somme de l'altitude et de la hauteur du géoïde **. C'est compliqué. Quand je l'ai illustré, c'est devenu une formidable palette de couleurs. La hauteur du géoïde varie en fonction du point sur la terre et peut être obtenue à partir du site de calcul de l'Agence météorologique. https://vldb.gsi.go.jp/sokuchi/surveycalc/geoid/calcgh/calc_f.html

la cérémonie

Puisqu'il est difficile d'écrire tout le processus de dérivation, les coordonnées du point P peuvent être exprimées comme suit en ** repliant toutes les arêtes **. Ici, «a est le rayon long», «e est l'excentricité», et dans le cas d'une ellipse compatible WGS-84, les constantes suivantes sont utilisées (e est en fait calculé à partir de la planéité).

La formule ci-dessus semble être ** célèbre (?) ** parmi ceux sur la route, et si vous la cherchez, vous trouverez diverses dérivations. Veuillez google si nécessaire. N'utilisez pas cet article comme référence.

Lorsqu'il est implémenté en Python

J'ai décidé d'en faire une fonction comme celle-ci. Arguments: latitude φ [deg], longitudinal λ [deg], ʻ hauteur de l'ellipse h [m] Valeur de retour:coordonnée x [m], coordonnée y [m], coordonnée z [m]`

import numpy as np

def xyz(phi, lamb, h):  #La latitude et la longitude des arguments sont exprimées en notation décimale
    
    #Convertir la latitude et la longitude en radian
    phi = np.deg2rad(phi)
    lamb = np.deg2rad(lamb)

    #constant(WGS-Pour 84 ellipses conformes)
    a = 6378137          #Long rayon[m]
    e = 0.0818191908426  #Taux décentré[-]
    
    N = a / np.sqrt(1 - (e ** 2 * np.sin(phi) ** 2))
    x = (N + h) * np.cos(phi) * np.cos(lamb)
    y = (N + h) * np.cos(phi) * np.sin(lamb)
    z = (N * (1 - e ** 2) + h) * np.sin(phi)
    
    return x, y, z  #[m]

c'est tout. Veuillez excuser ma pauvre écriture.

Recommended Posts

Convertir la latitude, la longitude et l'altitude GPS en coordonnées orthogonales tridimensionnelles
Script Python pour convertir la latitude et la longitude en code de maillage
Essayez de convertir les coordonnées de latitude / longitude et du monde entre elles avec python
[GPS] Calculez la distance, l'angle azimutal et l'angle d'élévation à partir de la latitude et de la longitude GPS à l'aide de pyproj
[Python] Comment convertir une liste bidimensionnelle en liste unidimensionnelle
Coordonnées de latitude et de longitude ↔ Conversion de coordonnées UTM avec python
Faites une liste de latitude et de longitude et convertissez les coordonnées UTM à la fois → Sortie du fichier