Formule Haversine pour les calculs GPS : distance et relèvement
Problème :
Calcul de la distance et le relèvement entre deux points GPS implique souvent l'utilisation de la formule de distance Haversine. Cependant, des problèmes peuvent survenir lors de l'obtention du relèvement correct, notamment si des valeurs négatives sont produites.
Solution :
Pour calculer la distance, la formule Haversine peut être utilisée :
from math import radians, cos, sin, asin, sqrt def haversine(lon1, lat1, lon2, lat2): """ Calculate the great circle distance in kilometers between two points on the earth (specified in decimal degrees) """ # convert decimal degrees to radians lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2]) # haversine formula dlon = lon2 - lon1 dlat = lat2 - lat1 a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2 c = 2 * asin(sqrt(a)) r = 6371 # Radius of earth in kilometers. Use 3956 for miles. Determines return value units. return c * r
Pour déterminer le roulement, ajustez la variable Bearing comme suit :
Bearing = atan2(sin(lon2-lon1)*cos(lat2), cos(lat1)*sin(lat2) - sin(lat1)*cos(lat2)*cos(lon2-lon1)) Bearing = degrees(Bearing)
Cette modification garantit que le roulement se situe entre 0 et 360 degrés.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!