Section courante

A propos

Section administrative du site

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 LotusScript suivant, vous trouvez la réponse que vous souhaitez :

  1. Sub Main
  2.      Print "Distance entre Montréal et Paris en Km: " + Str$(CoordToDeltaKm(45, 31, "N", 73, 34, "O", 48, 50, "N", 2, 20, "E"))
  3.      Print "Distance entre Montréal et Paris en Miles: " + Str$(CoordToDeltaStatuteMiles(45, 31, "N", 73, 34, "O", 48, 50, "N", 2, 20, "E"))
  4.      Print "Distance entre Montréal et Paris en Miles Nautique: " + Str$(CoordToDeltaNauticalMiles(45, 31, "N", 73, 34, "O", 48, 50, "N", 2, 20, "E")) 
  5. End Sub
  6.  
  7. Function CoordToDeltaKm( _
  8. Byval Q1Latitude As Double, Byval Q1LatiDeg As Double, Byval Q1LatiDirection As String, _
  9. Byval Q1Longitude As Double, Byval Q1LongDeg As Double, Byval Q1LongDirection As String, _
  10. Byval Q2Latitude As Double, Byval Q2LatiDeg As Double, Byval Q2LatiDirection As String, _
  11. Byval Q2Longitude As Double, Byval Q2LongDeg As Double, Byval Q2LongDirection As String) As Double
  12.      Dim a1, b1, a2, b2, RawDelta As Double
  13.      a1 = (Q1Latitude + (Q1LatiDeg / 60)) * Pi / 180
  14.      If Q1LatiDirection = "N" Then
  15.           a1 = -a1
  16.      End If
  17.      b1 = (Q1Longitude + (Q1LongDeg / 60)) * Pi / 180
  18.      If Q1LongDirection = "O" Then
  19.           b1 = -b1
  20.      End If
  21.      a2 = (Q2Latitude + (Q2LatiDeg / 60)) * Pi / 180
  22.      If Q2LatiDirection = "N" Then
  23.           a2 = -a2
  24.      End If
  25.      b2 = (Q2Longitude + (Q2LongDeg / 60)) * Pi / 180
  26.      If Q2LongDirection = "O" Then
  27.           b2 = -b2
  28.      End If
  29.      RawDelta = Acos(Cos(a1) * Cos(b1) * Cos(a2) * Cos(b2) + Cos(a1) * Sin(b1) * Cos(a2) * Sin(b2) + Sin(a1) * Sin(a2))
  30.      CoordToDeltaKm = RawDelta * 6378.0
  31. End Function
  32.  
  33. Function CoordToDeltaNauticalMiles( _
  34. Byval Q1Latitude As Double, Byval Q1LatiDeg As Double, Byval Q1LatiDirection As String, _
  35. Byval Q1Longitude As Double, Byval Q1LongDeg As Double, Byval Q1LongDirection As String, _
  36. Byval Q2Latitude As Double, Byval Q2LatiDeg As Double, Byval Q2LatiDirection As String, _
  37. Byval Q2Longitude As Double, Byval Q2LongDeg As Double, Byval Q2LongDirection As String) As Double
  38.      Dim a1, b1, a2, b2, RawDelta As Double
  39.      a1 = (Q1Latitude + (Q1LatiDeg / 60)) * Pi / 180
  40.      If Q1LatiDirection = "N" Then
  41.           a1 = -a1
  42.      End If
  43.      b1 = (Q1Longitude + (Q1LongDeg / 60)) * Pi / 180
  44.      If Q1LongDirection = "O" Then
  45.           b1 = -b1
  46.      End If
  47.      a2 = (Q2Latitude + (Q2LatiDeg / 60)) * Pi / 180
  48.      If Q2LatiDirection = "N" Then
  49.           a2 = -a2
  50.      End If
  51.      b2 = (Q2Longitude + (Q2LongDeg / 60)) * Pi / 180
  52.      If Q2LongDirection = "O" Then
  53.           b2 = -b2
  54.      End If
  55.      RawDelta = Acos(Cos(a1) * Cos(b1) * Cos(a2) * Cos(b2) + Cos(a1) * Sin(b1) * Cos(a2) * Sin(b2) + Sin(a1) * Sin(a2))
  56.      CoordToDeltaNauticalMiles = RawDelta * 3443.9
  57. End Function 
  58.  
  59. Function CoordToDeltaStatuteMiles( _
  60. Byval Q1Latitude As Double, Byval Q1LatiDeg As Double, Byval Q1LatiDirection As String, _
  61. Byval Q1Longitude As Double, Byval Q1LongDeg As Double, Byval Q1LongDirection As String, _
  62. Byval Q2Latitude As Double, Byval Q2LatiDeg As Double, Byval Q2LatiDirection As String, _
  63. Byval Q2Longitude As Double, Byval Q2LongDeg As Double, Byval Q2LongDirection As String) As Double
  64.      Dim a1, b1, a2, b2, RawDelta As Double
  65.      a1 = (Q1Latitude + (Q1LatiDeg / 60)) * Pi / 180
  66.      If Q1LatiDirection = "N" Then
  67.           a1 = -a1
  68.      End If
  69.      b1 = (Q1Longitude + (Q1LongDeg / 60)) * Pi / 180
  70.      If Q1LongDirection = "O" Then
  71.           b1 = -b1
  72.      End If
  73.      a2 = (Q2Latitude + (Q2LatiDeg / 60)) * Pi / 180
  74.      If Q2LatiDirection = "N" Then
  75.           a2 = -a2
  76.      End If
  77.      b2 = (Q2Longitude + (Q2LongDeg / 60)) * Pi / 180
  78.      If Q2LongDirection = "O" Then
  79.           b2 = -b2
  80.      End If
  81.      RawDelta = Acos(Cos(a1) * Cos(b1) * Cos(a2) * Cos(b2) + Cos(a1) * Sin(b1) * Cos(a2) * Sin(b2) + Sin(a1) * Sin(a2))
  82.      CoordToDeltaStatuteMiles = RawDelta * 3963.1
  83. End Function

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 18 janvier 2015