Es kann verwendet werden, wenn ein Raketen- oder Funkhubschrauber mit angeschlossenem GPS geflogen wird oder wenn Daten aus GPS-Informationen eines Flugobjekts erstellt werden. So berechnen Sie ** Entfernung, Azimutwinkel, Höhenwinkel ** aus GPS ** Informationen zu Breite / Länge, Höhe **. Es ist praktisch, die pyproj-Bibliothek von Python zu verwenden.
Installieren Sie pyproj
pip install pyproj
Oder
python setup.py build
auspython setup.py install
ausSei p1 der Bezugspunkt und obj das fliegende Ziel. Verwenden Sie die inv () -Methode der Geod-Klasse des pyproj-Pakets, um die Entfernung und den Azimut von der Breite und Länge von p1 und obj zu ermitteln. Die Entfernung ist die Entfernung auf der Karte und die lineare Entfernung vom Referenzpunkt zum Objekt. Darüber hinaus wird der Höhenwinkel (Winkel beim Aufblicken) mit math.atan2 () einschließlich der Höhe von obj berechnet.
geod_sample.py
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import math
from pyproj import Geod
#Anhaltspunkt(p1)Breite(p1_latitude),Längengrad(p1_longitude)
#Die Einheit ist Grad
p1_latitude = 35.3524
p1_longitude = 135.0302
#Flugobjekte sind Breitengrad(obj_latitude),Längengrad(obj_longitude)Höhe(obj_altitude)Ist bei
obj_latitude = 35.3532
obj_longitude = 135.0305
obj_altitude = 1000 #Einheiten(m)
#Ellps ist der äquatoriale Radius. GPS verwendet WGS84. Die Entfernung beträgt 6,378,137m
g = Geod(ellps='WGS84')
# inv() method
#Argument ist inv(Längengrad von p1,Breitengrad von p1,Ziellänge,Zielbreite, radians=False)
#Die Ausgabe ändert sich mit dem Bogenmaß. Nein, oder wenn Sie Grad und Wahr in Falsch eingeben, wird dies in Radian ausgegeben
#Der Rückgabewert ist der Azimutwinkel(azimuth)Antidirektionaler Winkel(back_azimuth),Entfernung(distance_2d)Auftrag
azimuth, back_azimuth, distance_2d = g.inv(p1_longitude, p1_latitude, obj_longitude, obj_latitude)
#Wenn Sie nur das wollen, was Sie brauchen, können Sie Folgendes tun
result = g.inv(p1_longitude, p1_latitude, obj_longitude, obj_latitude)
azimuth = result[0]
back_azimuth = result[1]
distance_2d = result[2]
# inv()Wenn Sie die zurückgelegte Entfernung kennen, wird der Höhenwinkel mit der GPS-Höhe kombiniert.(elevation)Verstehen
# math.degrees()Ist Mathe.atan2()Der Rückgabewert von ist Radian, also Grad(°)Wird konvertiert zu.
elevation = math.degrees(math.atan2(obj_altitude, distance_2d)
#Gerade Entfernung zu einem Flugobjekt(distance_3d)Verwendet Mathematik nach dem Pitagolas-Theorem
# math.Erforderlich von pypot.
distance_3d = math.hypot(distance_2d, obj_altitude)
print 'Die Entfernung auf der Karte von der Referenzposition zum Flugobjekt beträgt' + str(distance_2d) + "m"
print 'Der lineare Abstand von der Referenzposition zum Flugobjekt beträgt' + str(distance_3d) + "m"
print 'Der Azimutwinkel von der Referenzposition zum Flugobjekt beträgt' + str(azimuth) + "°"
print 'Der Richtungswinkel von der Referenzposition zum Flugobjekt beträgt' + str(back_azimuth) +"°"
print 'Der Elevationswinkel von der Referenzposition zum Flugobjekt beträgt' + str(elevation) + "°"
Recommended Posts