Section courante

A propos

Section administrative du site

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 :

  1. Program ConsoleDeltaToCoord;
  2.  
  3. {$APPTYPE CONSOLE}
  4. Uses SysUtils,Math;
  5.  
  6. Function CoordToDeltaKm(
  7.  Q1Latitude,Q1LatiDeg:Real;Q1LatiDirection:Char;
  8.  Q1Longitude,Q1LongDeg:Real;Q1LongDirection:Char;
  9.  Q2Latitude,Q2LatiDeg:Real;Q2LatiDirection:Char;
  10.  Q2Longitude,Q2LongDeg:Real;Q2LongDirection:Char
  11. ):Real;
  12. Var
  13.  a1,b1,a2,b2,RawDelta:Real;
  14. Begin
  15.  a1:=(Q1Latitude+(Q1LatiDeg/60))*PI/180;
  16.  If Q1LatiDirection='N'Then a1:=-a1;
  17.  b1:=(Q1Longitude+(Q1LongDeg/60))*PI/180;
  18.  If Q1LongDirection='O'Then b1:=-b1;
  19.  a2:=(Q2Latitude+(Q2LatiDeg/60))*PI/180;
  20.  If Q2LatiDirection='N'Then a2:=-a2;
  21.  b2:=(Q2Longitude+(Q2LongDeg/60))*PI/180;
  22.  If Q2LongDirection='O'Then b2:=-b2;
  23.  RawDelta:=ArcCos(Cos(a1)*Cos(b1)*Cos(a2)*Cos(b2) + Cos(a1)*Sin(b1)*Cos(a2)*Sin(b2) + Sin(a1)*Sin(a2));
  24.  CoordToDeltaKm:=RawDelta*6378.0;
  25. End;
  26.  
  27. Function CoordToDeltaStatuteMiles(
  28.  Q1Latitude,Q1LatiDeg:Real;Q1LatiDirection:Char;
  29.  Q1Longitude,Q1LongDeg:Real;Q1LongDirection:Char;
  30.  Q2Latitude,Q2LatiDeg:Real;Q2LatiDirection:Char;
  31.  Q2Longitude,Q2LongDeg:Real;Q2LongDirection:Char
  32. ):Real;
  33. Var
  34.  a1,b1,a2,b2,RawDelta:Real;
  35. Begin
  36.  a1:=(Q1Latitude+(Q1LatiDeg/60))*PI/180;
  37.  If Q1LatiDirection='N'Then a1:=-a1;
  38.  b1:=(Q1Longitude+(Q1LongDeg/60))*PI/180;
  39.  If Q1LongDirection='O'Then b1:=-b1;
  40.  a2:=(Q2Latitude+(Q2LatiDeg/60))*PI/180;
  41.  If Q2LatiDirection='N'Then a2:=-a2;
  42.  b2:=(Q2Longitude+(Q2LongDeg/60))*PI/180;
  43.  If Q2LongDirection='O'Then b2:=-b2;
  44.  RawDelta:=ArcCos(Cos(a1)*Cos(b1)*Cos(a2)*Cos(b2) + Cos(a1)*Sin(b1)*Cos(a2)*Sin(b2) + Sin(a1)*Sin(a2));
  45.  CoordToDeltaStatuteMiles:=RawDelta*3963.1;
  46. End;
  47.  
  48.  
  49. Function CoordToDeltaNauticalMiles(
  50.  Q1Latitude,Q1LatiDeg:Real;Q1LatiDirection:Char;
  51.  Q1Longitude,Q1LongDeg:Real;Q1LongDirection:Char;
  52.  Q2Latitude,Q2LatiDeg:Real;Q2LatiDirection:Char;
  53.  Q2Longitude,Q2LongDeg:Real;Q2LongDirection:Char
  54. ):Real;
  55. Var
  56.  a1,b1,a2,b2,RawDelta:Real;
  57. Begin
  58.  a1:=(Q1Latitude+(Q1LatiDeg/60))*PI/180;
  59.  If Q1LatiDirection='N'Then a1:=-a1;
  60.  b1:=(Q1Longitude+(Q1LongDeg/60))*PI/180;
  61.  If Q1LongDirection='O'Then b1:=-b1;
  62.  a2:=(Q2Latitude+(Q2LatiDeg/60))*PI/180;
  63.  If Q2LatiDirection='N'Then a2:=-a2;
  64.  b2:=(Q2Longitude+(Q2LongDeg/60))*PI/180;
  65.  If Q2LongDirection='O'Then b2:=-b2;
  66.  RawDelta:=ArcCos(Cos(a1)*Cos(b1)*Cos(a2)*Cos(b2) + Cos(a1)*Sin(b1)*Cos(a2)*Sin(b2) + Sin(a1)*Sin(a2));
  67.  CoordToDeltaNauticalMiles:=RawDelta * 3443.9;
  68. End;
  69.  
  70. BEGIN
  71.  WriteLn('Distance entre Montréal et Paris en Km: ',
  72.          CoordToDeltaKm(45, 31,'N',73, 34,'O',48, 50,'N', 2,  20,'E'):0:8);
  73.  WriteLn('Distance entre Montréal et Paris en Miles: ',
  74.          CoordToDeltaStatuteMiles(45, 31,'N', 73, 34,'O',    48, 50,'N', 2,  20,'E'):0:8);
  75.  WriteLn('Distance entre Montréal et Paris en Miles Nautique: ',
  76.          CoordToDeltaNauticalMiles(45, 31,'N', 73, 34,'O',    48, 50,'N', 2,  20,'E'):0:8);
  77. END.

on obtiendra le résultat suivant :

Distance entre Montréal et Paris en Km: 5510.16761889
Distance 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 août 2014