Le calcul de la distance géographique entre deux points de la surface terrestre constitue l'une des opérations les plus importantes de la géographie moderne, de la cartographie numérique et des systèmes de navigation. Grâce à la généralisation des GPS, des téléphones intelligents et des applications de cartographie, ce type de calcul est désormais utilisé quotidiennement par des millions de personnes sans même qu'elles en soient conscientes. Qu'il s'agisse de déterminer la distance séparant deux villes, de planifier un trajet aérien, maritime ou routier, ou encore d'effectuer des analyses géographiques, la connaissance des coordonnées de latitude et de longitude permet d'obtenir des résultats remarquablement précis.
Contrairement à ce que l'on pourrait croire, il n'est pas nécessaire de maîtriser l'ensemble des théories avancées de la trigonométrie sphérique pour réaliser ce type de calcul. Une fois les coordonnées géographiques connues, quelques formules mathématiques suffisent pour déterminer l'angle séparant les deux emplacements sur la sphère terrestre et convertir cet angle en une distance réelle. Selon les besoins de l'utilisateur, le résultat peut être exprimé en kilomètres, en miles terrestres ou encore en miles nautiques, ces derniers étant particulièrement utilisés dans les domaines de la navigation maritime et aérienne.
Afin d'illustrer cette méthode, prenons l'exemple de deux villes parmi les plus connues du monde occidental. Montréal, située au Québec, possède les coordonnées 45°31' Nord et 73°34' Ouest, tandis que Paris, capitale de la France, se trouve à la latitude 48°50' Nord et à la longitude 2°20' Est. Malgré les milliers de kilomètres qui les séparent et l'océan Atlantique qui s'étend entre elles, il est possible de calculer avec une très grande précision la distance qui les sépare à partir de ces seules coordonnées géographiques.
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 |
Le programme Delphi présenté ci-dessous effectue automatiquement cette opération. Il convertit tout d'abord les degrés et les minutes en valeurs angulaires exprimées en radians, puis applique les fonctions trigonométriques appropriées afin de déterminer la distance orthodromique, c'est-à-dire la plus courte distance suivant la courbure de la Terre. Le résultat est ensuite multiplié par le rayon terrestre correspondant à l'unité désirée afin d'obtenir une distance exprimée en kilomètres, en miles terrestres ou en miles nautiques. À l'aide de ce code source Delphi, vous trouverez la réponse que vous souhaitez tout en découvrant les principes mathématiques qui permettent aux systèmes modernes de navigation et de cartographie de calculer instantanément les distances entre n'importe quels points du globe.
A l'aide du code source Delphi suivant, vous trouvez la réponse que vous souhaitez :
- Program ConsoleDeltaToCoord;
-
- {$APPTYPE CONSOLE}
- Uses SysUtils,Math;
-
- Function CoordToDeltaKm(
- Q1Latitude,Q1LatiDeg:Real;Q1LatiDirection:Char;
- Q1Longitude,Q1LongDeg:Real;Q1LongDirection:Char;
- Q2Latitude,Q2LatiDeg:Real;Q2LatiDirection:Char;
- Q2Longitude,Q2LongDeg:Real;Q2LongDirection:Char
- ):Real;
- Var
- a1,b1,a2,b2,RawDelta:Real;
- Begin
- a1:=(Q1Latitude+(Q1LatiDeg/60))*PI/180;
- If Q1LatiDirection='N'Then a1:=-a1;
- b1:=(Q1Longitude+(Q1LongDeg/60))*PI/180;
- If Q1LongDirection='O'Then b1:=-b1;
- a2:=(Q2Latitude+(Q2LatiDeg/60))*PI/180;
- If Q2LatiDirection='N'Then a2:=-a2;
- b2:=(Q2Longitude+(Q2LongDeg/60))*PI/180;
- If Q2LongDirection='O'Then b2:=-b2;
- RawDelta:=ArcCos(Cos(a1)*Cos(b1)*Cos(a2)*Cos(b2) + Cos(a1)*Sin(b1)*Cos(a2)*Sin(b2) + Sin(a1)*Sin(a2));
- CoordToDeltaKm:=RawDelta*6378.0;
- End;
-
- Function CoordToDeltaStatuteMiles(
- Q1Latitude,Q1LatiDeg:Real;Q1LatiDirection:Char;
- Q1Longitude,Q1LongDeg:Real;Q1LongDirection:Char;
- Q2Latitude,Q2LatiDeg:Real;Q2LatiDirection:Char;
- Q2Longitude,Q2LongDeg:Real;Q2LongDirection:Char
- ):Real;
- Var
- a1,b1,a2,b2,RawDelta:Real;
- Begin
- a1:=(Q1Latitude+(Q1LatiDeg/60))*PI/180;
- If Q1LatiDirection='N'Then a1:=-a1;
- b1:=(Q1Longitude+(Q1LongDeg/60))*PI/180;
- If Q1LongDirection='O'Then b1:=-b1;
- a2:=(Q2Latitude+(Q2LatiDeg/60))*PI/180;
- If Q2LatiDirection='N'Then a2:=-a2;
- b2:=(Q2Longitude+(Q2LongDeg/60))*PI/180;
- If Q2LongDirection='O'Then b2:=-b2;
- RawDelta:=ArcCos(Cos(a1)*Cos(b1)*Cos(a2)*Cos(b2) + Cos(a1)*Sin(b1)*Cos(a2)*Sin(b2) + Sin(a1)*Sin(a2));
- CoordToDeltaStatuteMiles:=RawDelta*3963.1;
- End;
-
-
- Function CoordToDeltaNauticalMiles(
- Q1Latitude,Q1LatiDeg:Real;Q1LatiDirection:Char;
- Q1Longitude,Q1LongDeg:Real;Q1LongDirection:Char;
- Q2Latitude,Q2LatiDeg:Real;Q2LatiDirection:Char;
- Q2Longitude,Q2LongDeg:Real;Q2LongDirection:Char
- ):Real;
- Var
- a1,b1,a2,b2,RawDelta:Real;
- Begin
- a1:=(Q1Latitude+(Q1LatiDeg/60))*PI/180;
- If Q1LatiDirection='N'Then a1:=-a1;
- b1:=(Q1Longitude+(Q1LongDeg/60))*PI/180;
- If Q1LongDirection='O'Then b1:=-b1;
- a2:=(Q2Latitude+(Q2LatiDeg/60))*PI/180;
- If Q2LatiDirection='N'Then a2:=-a2;
- b2:=(Q2Longitude+(Q2LongDeg/60))*PI/180;
- If Q2LongDirection='O'Then b2:=-b2;
- RawDelta:=ArcCos(Cos(a1)*Cos(b1)*Cos(a2)*Cos(b2) + Cos(a1)*Sin(b1)*Cos(a2)*Sin(b2) + Sin(a1)*Sin(a2));
- CoordToDeltaNauticalMiles:=RawDelta * 3443.9;
- End;
-
- BEGIN
- WriteLn('Distance entre Montréal et Paris en Km: ',
- CoordToDeltaKm(45, 31,'N',73, 34,'O',48, 50,'N', 2, 20,'E'):0:8);
- WriteLn('Distance entre Montréal et Paris en Miles: ',
- CoordToDeltaStatuteMiles(45, 31,'N', 73, 34,'O', 48, 50,'N', 2, 20,'E'):0:8);
- WriteLn('Distance entre Montréal et Paris en Miles Nautique: ',
- CoordToDeltaNauticalMiles(45, 31,'N', 73, 34,'O', 48, 50,'N', 2, 20,'E'):0:8);
- END.
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