Accueil de Gladir.com Notes légales de Gladir.com Flux RSS des nouvelles du site Gladir.com - Langage de programmation - Turbo Pascal - Calcul la distance entre deux coordonnées de Longitude et Latitude Section du logiciel DOS «MonsterBook» Inventaire de la bibliothèque de Gladir.com Entrée administrateur

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éss suivantes :

Ville Latitude Longitude
Montréal 45 31N 73 34O
Paris 48 50N 2 20E

A l'aide du code source Pascal suivant pour le Turbo Pascal, vous trouvez la réponse que vous souhaitez :

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