Calcul la distance entre deux coordonnées de Longitude et Latitude
Une des fonctions les plus communes de la géographie et des systèmes modernes, c'est le calcul de la distance géographique entre deux coordonnées de Longitude et de Latitude. Il n'y a aucune nécessité de grande connaissance en trigonométrie pour arriver à se genre de calcul dans le format qu'on le souhaite, Km, Miles ou Miles Nautiques. Ainsi, si vous savez les coordonnées suivantes :
Ville | Latitude | Longitude |
---|---|---|
Montréal | 45 31N | 73 34O |
Paris | 48 50N | 2 20E |
A l'aide du code source C# (C Sharp) suivant, vous trouvez la réponse que vous souhaitez :
Essayer maintenant !
- using System;
- using System.Collections.Generic;
- using System.Text;
-
- namespace ConsoleApplication1
- {
- class Program
- {
- static void Main(string[] args)
- {
- Console.WriteLine("Distance entre Montréal et Paris en Km: " +
- (double)CoordToDeltaKm(45, 31, 'N', 73, 34, 'O', 48, 50, 'N', 2, 20, 'E'));
- Console.WriteLine("Distance entre Montréal et Paris en Miles: " +
- (double)CoordToDeltaStatuteMiles(45, 31, 'N', 73, 34, 'O', 48, 50, 'N', 2, 20, 'E'));
- Console.WriteLine("Distance entre Montréal et Paris en Miles Nautique: " +
- (double)CoordToDeltaNauticalMiles(45, 31, 'N', 73, 34, 'O', 48, 50, 'N', 2, 20, 'E'));
- }
-
- static double CoordToDeltaKm(
- double Q1Latitude, double Q1LatiDeg, char Q1LatiDirection,
- double Q1Longitude, double Q1LongDeg, char Q1LongDirection,
- double Q2Latitude, double Q2LatiDeg, char Q2LatiDirection,
- double Q2Longitude, double Q2LongDeg, char Q2LongDirection
- )
- {
- double a1, b1, a2, b2, RawDelta;
- a1 = (Q1Latitude + (Q1LatiDeg / 60)) * Math.PI / 180;
- if (Q1LatiDirection == 'N') a1 = -a1;
- b1 = (Q1Longitude + (Q1LongDeg / 60)) * Math.PI / 180;
- if (Q1LongDirection == 'O') b1 = -b1;
- a2 = (Q2Latitude + (Q2LatiDeg / 60)) * Math.PI / 180;
- if (Q2LatiDirection == 'N') a2 = -a2;
- b2 = (Q2Longitude + (Q2LongDeg / 60)) * Math.PI / 180;
- if (Q2LongDirection == 'O') b2 = -b2;
- RawDelta = Math.Acos(Math.Cos(a1) * Math.Cos(b1) * Math.Cos(a2) * Math.Cos(b2) + Math.Cos(a1) * Math.Sin(b1) * Math.Cos(a2) * Math.Sin(b2) + Math.Sin(a1) * Math.Sin(a2));
- return RawDelta * 6378.0;
- }
-
- static double CoordToDeltaStatuteMiles(
- double Q1Latitude, double Q1LatiDeg, char Q1LatiDirection,
- double Q1Longitude, double Q1LongDeg, char Q1LongDirection,
- double Q2Latitude, double Q2LatiDeg, char Q2LatiDirection,
- double Q2Longitude, double Q2LongDeg, char Q2LongDirection
- )
- {
- double a1, b1, a2, b2, RawDelta;
- a1 = (Q1Latitude + (Q1LatiDeg / 60)) * Math.PI / 180;
- if (Q1LatiDirection == 'N') a1 = -a1;
- b1 = (Q1Longitude + (Q1LongDeg / 60)) * Math.PI / 180;
- if (Q1LongDirection == 'O') b1 = -b1;
- a2 = (Q2Latitude + (Q2LatiDeg / 60)) * Math.PI / 180;
- if (Q2LatiDirection == 'N') a2 = -a2;
- b2 = (Q2Longitude + (Q2LongDeg / 60)) * Math.PI / 180;
- if (Q2LongDirection == 'O') b2 = -b2;
- RawDelta = Math.Acos(Math.Cos(a1) * Math.Cos(b1) * Math.Cos(a2) * Math.Cos(b2) + Math.Cos(a1) * Math.Sin(b1) * Math.Cos(a2) * Math.Sin(b2) + Math.Sin(a1) * Math.Sin(a2));
- return RawDelta * 3963.1;
- }
-
- static double CoordToDeltaNauticalMiles(
- double Q1Latitude, double Q1LatiDeg, char Q1LatiDirection,
- double Q1Longitude, double Q1LongDeg, char Q1LongDirection,
- double Q2Latitude, double Q2LatiDeg, char Q2LatiDirection,
- double Q2Longitude, double Q2LongDeg, char Q2LongDirection
- )
- {
- double a1, b1, a2, b2, RawDelta;
- a1 = (Q1Latitude + (Q1LatiDeg / 60)) * Math.PI / 180;
- if (Q1LatiDirection == 'N') a1 = -a1;
- b1 = (Q1Longitude + (Q1LongDeg / 60)) * Math.PI / 180;
- if (Q1LongDirection == 'O') b1 = -b1;
- a2 = (Q2Latitude + (Q2LatiDeg / 60)) * Math.PI / 180;
- if (Q2LatiDirection == 'N') a2 = -a2;
- b2 = (Q2Longitude + (Q2LongDeg / 60)) * Math.PI / 180;
- if (Q2LongDirection == 'O') b2 = -b2;
- RawDelta = Math.Acos(Math.Cos(a1) * Math.Cos(b1) * Math.Cos(a2) * Math.Cos(b2) + Math.Cos(a1) * Math.Sin(b1) * Math.Cos(a2) * Math.Sin(b2) + Math.Sin(a1) * Math.Sin(a2));
- return RawDelta * 3443.9;
- }
-
- }
- }
on obtiendra le résultat suivant :
Distance entre Montréal et Paris en Km: 5510.16761889Distance entre Montréal et Paris en Miles: 3423.85470217
Distance entre Montréal et Paris en Miles Nautique: 2975.30044884
Dernière mise à jour : Dimanche, le 17 avril 2016