Latitude et longitude : calculer la distance entre deux points
Le calcul de la distance entre deux points du globe nécessite la connaissance de leurs latitudes et longitudes. Bien que de nombreuses solutions existent, une méthode précise pour déterminer la distance entre deux coordonnées est la formule Haversine.
Une implémentation Java de la méthode Haversine, fournie par Dommer, est :
<code class="java">final double RADIUS = 6371.01; double temp = Math.cos(Math.toRadians(latA)) * Math.cos(Math.toRadians(latB)) * Math.cos(Math.toRadians((latB) - (latA))) + Math.sin(Math.toRadians(latA)) * Math.sin(Math.toRadians(latB)); return temp * RADIUS * Math.PI / 180;</code>
Cependant , de petites erreurs peuvent s'accumuler lors de l'utilisation de cette méthode pour des ensembles de données volumineux tels que les traces GPS.
Une implémentation améliorée qui prend également en compte les différences de hauteur entre les points est :
<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>
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!