|
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:
| Montréal |
45 31N |
73 34O |
| Paris |
48 50N |
2 20E |
A l'aide du code source ColdFusion suivant, vous trouvez la réponse que vous souhaitez:
<CFSCRIPT>
WriteOutput("Distance entre Montréal et Paris en Km: " & CoordToDeltaKm(45, 31,'N', 73, 34,'O', 48, 50,'N', 2, 20,'E') & "<BR>");
WriteOutput("Distance entre Montréal et Paris en Miles: " & CoordToDeltaStatuteMiles(45, 31,'N', 73, 34,'O', 48, 50,'N', 2, 20,'E') & "<BR>");
WriteOutput("Distance entre Montréal et Paris en Miles Nautique: " & CoordToDeltaNauticalMiles(45, 31,'N', 73, 34,'O', 48, 50,'N', 2, 20,'E') & "<BR>");
function CoordToDeltaKm(
Q1Latitude,Q1LatiDeg, Q1LatiDirection,
Q1Longitude,Q1LongDeg, Q1LongDirection,
Q2Latitude,Q2LatiDeg, Q2LatiDirection,
Q2Longitude,Q2LongDeg, Q2LongDirection
) {
PI = 3.14159265358979224;
a1=(Q1Latitude+(Q1LatiDeg/60))*PI/180;
if(Compare(Q1LatiDirection,'N')) a1=-a1;
b1=(Q1Longitude+(Q1LongDeg/60))*PI/180;
if(Compare(Q1LongDirection,'O')) b1=-b1;
a2=(Q2Latitude+(Q2LatiDeg/60))*PI/180;
if(Compare(Q2LatiDirection,'N')) a2=-a2;
b2=(Q2Longitude+(Q2LongDeg/60))*PI/180;
if(Compare(Q2LongDirection,'O')) b2=-b2;
RawDelta = acos(cos(a1)*cos(b1)*cos(a2)*cos(b2) + cos(a1)*sin(b1)*cos(a2)*sin(b2) + sin(a1)*sin(a2));
return RawDelta * 6378.0;
}
function CoordToDeltaStatuteMiles(
Q1Latitude,Q1LatiDeg, Q1LatiDirection,
Q1Longitude,Q1LongDeg, Q1LongDirection,
Q2Latitude,Q2LatiDeg, Q2LatiDirection,
Q2Longitude,Q2LongDeg, Q2LongDirection
) {
PI = 3.14159265358979224;
a1=(Q1Latitude+(Q1LatiDeg/60))*PI/180;
if(Compare(Q1LatiDirection,'N')) a1=-a1;
b1=(Q1Longitude+(Q1LongDeg/60))*PI/180;
if(Compare(Q1LongDirection,'O')) b1=-b1;
a2=(Q2Latitude+(Q2LatiDeg/60))*PI/180;
if(Compare(Q2LatiDirection,'N')) a2=-a2;
b2=(Q2Longitude+(Q2LongDeg/60))*PI/180;
if(Compare(Q2LongDirection,'O')) b2=-b2;
RawDelta = acos(cos(a1)*cos(b1)*cos(a2)*cos(b2) + cos(a1)*sin(b1)*cos(a2)*sin(b2) + sin(a1)*sin(a2));
return RawDelta * 3963.1;
}
function CoordToDeltaNauticalMiles(
Q1Latitude,Q1LatiDeg, Q1LatiDirection,
Q1Longitude,Q1LongDeg, Q1LongDirection,
Q2Latitude,Q2LatiDeg, Q2LatiDirection,
Q2Longitude,Q2LongDeg, Q2LongDirection
) {
PI = 3.14159265358979224;
a1=(Q1Latitude+(Q1LatiDeg/60))*PI/180;
if(Compare(Q1LatiDirection,'N')) a1=-a1;
b1=(Q1Longitude+(Q1LongDeg/60))*PI/180;
if(Compare(Q1LongDirection,'O')) b1=-b1;
a2=(Q2Latitude+(Q2LatiDeg/60))*PI/180;
if(Compare(Q2LatiDirection,'N')) a2=-a2;
b2=(Q2Longitude+(Q2LongDeg/60))*PI/180;
if(Compare(Q2LongDirection,'O')) b2=-b2;
RawDelta = acos(cos(a1)*cos(b1)*cos(a2)*cos(b2) + cos(a1)*sin(b1)*cos(a2)*sin(b2) + sin(a1)*sin(a2));
return RawDelta * 3443.9;
}
</CFSCRIPT>
|
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
|
|