Maison > Java > javaDidacticiel > Comment calculer la distance entre deux points en utilisant la latitude, la longitude et l'altitude ?

Comment calculer la distance entre deux points en utilisant la latitude, la longitude et l'altitude ?

Linda Hamilton
Libérer: 2024-11-02 04:18:30
original
522 Les gens l'ont consulté

How to Calculate Distance Between Two Points Using Latitude, Longitude, and Altitude?

Calcul de la distance entre deux points en utilisant la latitude et la longitude

Pour calculer avec précision la distance entre deux points en fonction de leur latitude et de leur longitude, il est crucial considérer la courbure de la surface de la Terre. La méthode Haversine, une formule bien connue, corrige cette courbure et fournit des résultats précis.

Code de Dommer

Le code de Dommer utilise la formule Haversine pour calculer la distance. Cependant, il ne tient pas compte des différences de hauteur entre les deux points.

Mise en œuvre recommandée

Pour les traces GPS ou les applications où l'altitude est un facteur, considérez ceci modifié implémentation :

<code class="java">public static double distance(double lat1, double lat2, double lon1,
        double lon2, double el1, double el2) {

    final int R = 6371; // Radius of the earth
    
    double latDistance = Math.toRadians(lat2 - lat1);
    double lonDistance = Math.toRadians(lon2 - lon1);
    double a = Math.sin(latDistance / 2) * Math.sin(latDistance / 2)
            + Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2))
            * Math.sin(lonDistance / 2) * Math.sin(lonDistance / 2);
    double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
    double distance = R * c * 1000; // convert to meters

    double height = el1 - el2;

    distance = Math.pow(distance, 2) + Math.pow(height, 2);

    return Math.sqrt(distance);
}</code>
Copier après la connexion

Ce code intègre à la fois la formule Haversine et les différences de hauteur pour calculer avec précision la distance entre deux points.

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