[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

Aperçu

Il peut être utilisé lors du pilotage d'une fusée ou d'un hélicoptère radiocommandé avec GPS attaché, ou lors de la création de données à partir des informations GPS d'un objet volant. Comment calculer ** distance, angle azimut, angle d'élévation ** à partir des informations GPS ** latitude / longitude, altitude **. Il est pratique d'utiliser la bibliothèque pyproj de python, alors comment l'utiliser.

Préparation préalable

Installez pyproj pip install pyproj

Ou

  1. Téléchargez la source depuis page pyproj
  2. Exécutez python setup.py build
  3. Exécutez python setup.py install

Objectif

Soit p1 le point de référence et obj la cible volante. Utilisez la méthode inv () de la classe Geod du package pyproj pour trouver la distance et l'azimut depuis la latitude et la longitude de p1 et obj. La distance est la distance sur la carte et la distance linéaire entre le point de référence et l'objet. De plus, l'angle d'élévation (angle en regardant vers le haut) est calculé à l'aide de math.atan2 (), y compris l'altitude de obj. 2d.jpg

3d.jpg

La source

geod_sample.py


#!/usr/bin/env python
#-*- coding: utf-8 -*-
import math
from pyproj import Geod

#Point de référence(p1)Latitude(p1_latitude),longitude(p1_longitude) 
#L'unité est le degré
p1_latitude = 35.3524
p1_longitude = 135.0302

#Les objets volants sont la latitude(obj_latitude),longitude(obj_longitude), Altitude(obj_altitude)Est à
obj_latitude = 35.3532
obj_longitude = 135.0305
obj_altitude = 1000 #Unités(m)

#ellps est le rayon équatorial. Le GPS utilise WGS84. La distance est de 6,378,137m
g = Geod(ellps='WGS84')

# inv() method
#L'argument est inv(longitude de p1,Latitude de p1,Longitude cible,Latitude cible, radians=False)
#La sortie change avec les radians. Non, ou si vous entrez Degré et Vrai dans Faux, il sera affiché en Radian
#La valeur de retour est l'angle azimutal(azimuth), Angle anti-directionnel(back_azimuth),distance(distance_2d)Commande
azimuth, back_azimuth, distance_2d = g.inv(p1_longitude, p1_latitude, obj_longitude, obj_latitude)

#Si vous ne voulez que ce dont vous avez besoin, vous pouvez faire ce qui suit
result = g.inv(p1_longitude, p1_latitude, obj_longitude, obj_latitude)
azimuth = result[0]
back_azimuth = result[1]
distance_2d = result[2]

# inv()Si vous connaissez la distance obtenue en, l'angle d'élévation sera combiné avec l'altitude GPS.(elevation)Comprendre
# math.degrees()Est-ce que les maths.atan2()La valeur de retour de est Radian, donc Degré(°)Est en cours de conversion.
elevation = math.degrees(math.atan2(obj_altitude, distance_2d)

#Distance directe à un objet volant(distance_3d)Utilise les mathématiques pour le théorème de Pitagolas
# math.Requis par pypot.
distance_3d = math.hypot(distance_2d, obj_altitude)

print 'La distance sur la carte entre la position de référence et l'objet volant est' + str(distance_2d) + "m"
print 'La distance linéaire entre la position de référence et l'objet volant est' + str(distance_3d) + "m"
print 'L'angle azimutal de la position de référence à l'objet volant est' + str(azimuth) + "°"
print 'L'angle anti-directionnel entre la position de référence et l'objet volant est' + str(back_azimuth) +"°"
print 'L'angle d'élévation de la position de référence à l'objet volant est' + str(elevation) + "°"

Recommended Posts

[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
Trouvez la distance (en tenant compte de la rondeur de la terre) de la latitude et de la longitude.
Obtenez l'adresse à partir de la latitude et de la longitude
Télécharger les tuiles de l'Institut géographique à partir de la latitude et de la longitude
Donnez les données de séquence de points de latitude et de longitude et essayez d'identifier la route à partir des données d'OpenStreetMap
Convertir la latitude, la longitude et l'altitude GPS en coordonnées orthogonales tridimensionnelles
Comment obtenir la valeur en pixels du point à partir de l'image satellite en spécifiant la latitude et la longitude
Trouvez le waypoint à partir de la latitude et de la longitude (en tenant compte de la rondeur de la terre).