Formula Haversine in Python (cuscinetto e distanza tra due punti GPS)

| | | | | |

Problema

Vorrei sapere come ottenere la distanza e rilevamento tra 2 punti GPS. Ho studiato la formula haversine. Qualcuno mi ha detto che potrei anche trovare il cuscinetto usando gli stessi dati.

Modifica

Tutto funziona bene ma il cuscinetto non funziona ancora bene. Il cuscinetto esce negativo ma dovrebbe essere compreso tra 0 e 360 gradi. I dati impostati dovrebbero rendere il rilevamento orizzontale 96.021666666666666 ed è:

Punto iniziale: 53.32055555555556 , -1.7297222222222221 Rilevamento: 96.021666666666666 Distanza: 2 km Punto di destinazione: 53.31861111111111, -1.6997222222222223 Rilevamento finale: 96.0455555555555555 

Ecco il mio nuovo codice:

from math import * Aaltitude = 2000 Oppsite = 20000 lat1 = 53.32055555555555555555556 Lat2 = 53.31861111111111 LON1 = -1.7297222222222221 LON2 = -1.699722222222221 LON2 = -1.6997222222222223 LON1, LAT1, LON2, LAT2 = Mappa (Radians, [LON1, LAT1, LON2, LAT2]) DLON = LON2 - LON1 DLAT = LAT2 - LAT1 A = SIN (DLAT /2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2 c = 2 * atan2(sqrt(a), sqrt(1-a)) Base = 6371 * c Cuscinetto =atan2(cos(lat1)*sin(lat2)-sin(lat1)*cos(lat2)*co s(lon2-lon1), sin(lon2-lon1)*cos(lat2)) Bearing = gradi(Bearing) print "" print "" print "----------------- ---" print "Distanza Orizzontale:" print Stampa Base "---------------------" print "Cuscinetto:" print Stampa cuscinetto "------- --------------" Base2 = Base * 1000 distanza = Base * 2 + Oppsite * 2 / 2 Caltitude = Oppsite - Aaltitude a = Oppsite/Base b = atan(a) c = gradi (b) distanza = distanza / 1000 print "Il grado di angolo verticale è:" print c print "--------------------" print "La distanza tra il palloncino Il GPS e l'Antenna GPS sono:" print distance print "--------------------"