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 Euphoria suivant, vous trouvez la réponse que vous souhaitez:
include misc.e
constant SCREEN = 1
function CoordToDeltaKm(
atom Q1Latitude,atom Q1LatiDeg,sequence Q1LatiDirection,
atom Q1Longitude,atom Q1LongDeg,sequence Q1LongDirection,
atom Q2Latitude,atom Q2LatiDeg,sequence Q2LatiDirection,
atom Q2Longitude,atom Q2LongDeg,sequence Q2LongDirection
)
atom a1,b1,a2,b2,RawDelta
a1=(Q1Latitude+(Q1LatiDeg/60))*PI/180
if equal(Q1LatiDirection,"N")then
a1=-a1
end if
b1=(Q1Longitude+(Q1LongDeg/60))*PI/180
if equal(Q1LongDirection,"O")then
b1=-b1
end if
a2=(Q2Latitude+(Q2LatiDeg/60))*PI/180
if equal(Q2LatiDirection,"N")then
a2=-a2
end if
b2=(Q2Longitude+(Q2LongDeg/60))*PI/180
if equal(Q2LongDirection,"O")then
b2=-b2
end if
RawDelta = arccos(cos(a1)*cos(b1)*cos(a2)*cos(b2) + cos(a1)*sin(b1)*cos(a2)*sin(b2) + sin(a1)*sin(a2))
return RawDelta * 6378.0
end function
function CoordToDeltaStatuteMiles(
atom Q1Latitude,atom Q1LatiDeg,sequence Q1LatiDirection,
atom Q1Longitude,atom Q1LongDeg,sequence Q1LongDirection,
atom Q2Latitude,atom Q2LatiDeg,sequence Q2LatiDirection,
atom Q2Longitude,atom Q2LongDeg,sequence Q2LongDirection
)
atom a1,b1,a2,b2,RawDelta
a1=(Q1Latitude+(Q1LatiDeg/60))*PI/180
if equal(Q1LatiDirection,"N")then
a1=-a1
end if
b1=(Q1Longitude+(Q1LongDeg/60))*PI/180
if equal(Q1LongDirection,"O")then
b1=-b1
end if
a2=(Q2Latitude+(Q2LatiDeg/60))*PI/180
if equal(Q2LatiDirection,"N")then
a2=-a2
end if
b2=(Q2Longitude+(Q2LongDeg/60))*PI/180
if equal(Q2LongDirection,"O")then
b2=-b2
end if
RawDelta = arccos(cos(a1)*cos(b1)*cos(a2)*cos(b2) + cos(a1)*sin(b1)*cos(a2)*sin(b2) + sin(a1)*sin(a2))
return RawDelta * 3963.1
end function
function CoordToDeltaNauticalMiles(
atom Q1Latitude,atom Q1LatiDeg,sequence Q1LatiDirection,
atom Q1Longitude,atom Q1LongDeg,sequence Q1LongDirection,
atom Q2Latitude,atom Q2LatiDeg,sequence Q2LatiDirection,
atom Q2Longitude,atom Q2LongDeg,sequence Q2LongDirection
)
atom a1,b1,a2,b2,RawDelta
a1=(Q1Latitude+(Q1LatiDeg/60))*PI/180
if equal(Q1LatiDirection,"N")then
a1=-a1
end if
b1=(Q1Longitude+(Q1LongDeg/60))*PI/180
if equal(Q1LongDirection,"O")then
b1=-b1
end if
a2=(Q2Latitude+(Q2LatiDeg/60))*PI/180
if equal(Q2LatiDirection,"N")then
a2=-a2
end if
b2=(Q2Longitude+(Q2LongDeg/60))*PI/180
if equal(Q2LongDirection,"O")then
b2=-b2
end if
RawDelta = arccos(cos(a1)*cos(b1)*cos(a2)*cos(b2) + cos(a1)*sin(b1)*cos(a2)*sin(b2) + sin(a1)*sin(a2))
return RawDelta * 3443.9
end function
printf(SCREEN,"Distance entre Montréal et Paris en Km: %f\n",
CoordToDeltaKm(45, 31,"N",73, 34,"O",48, 50,"N", 2, 20,"E"))
printf(SCREEN,"Distance entre Montréal et Paris en Miles: %f\n",
CoordToDeltaStatuteMiles(45, 31,"N", 73, 34,"O", 48, 50,"N", 2, 20,"E"))
printf(SCREEN,"Distance entre Montréal et Paris en Miles Nautique: %f\n",
CoordToDeltaNauticalMiles(45, 31,"N", 73, 34,"O", 48, 50,"N", 2, 20,"E"))
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
Dernière mise à jour : Samedi, le 13 janvier 2018