Maison > développement back-end > Tutoriel Python > Comment puis-je calculer avec précision la distance et le relèvement GPS à l'aide de la formule Haversine ?

Comment puis-je calculer avec précision la distance et le relèvement GPS à l'aide de la formule Haversine ?

Mary-Kate Olsen
Libérer: 2024-12-02 08:42:11
original
944 Les gens l'ont consulté

How Can I Accurately Calculate GPS Distance and Bearing Using the Haversine Formula?

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
Copier après la connexion

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)
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal