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

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

A l'aide du code source Visual Basic .NET suivant, vous trouvez la réponse que vous souhaitez :

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

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 : Samedi, le 22 octobre 2016