DONNE LA DISTANCE (EN M) ENTRE DEUX POINTS DE COORDONNÉES GÉOGRAPHIQUES CONNUES
katsankat
Messages postés571Date d'inscriptionvendredi 30 décembre 2005StatutMembreDernière intervention12 juillet 2012
-
31 mai 2006 à 08:53
mdegremo
Messages postés17Date d'inscriptionjeudi 21 août 2008StatutMembreDernière intervention10 septembre 2011
-
25 janv. 2011 à 10:13
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
La distance Loxo ainsi :
DstLoxo = RayonSphere * Abs((ya - yb) / Cos(CapLoxo))
zaxoum
Messages postés13Date d'inscriptionmardi 14 novembre 2000StatutMembreDernière intervention18 janvier 2008 18 janv. 2008 à 14:20
Merci pour cette précision !
xyp
Messages postés15Date d'inscriptionmardi 16 mars 2004StatutMembreDernière intervention16 avril 2008 18 janv. 2008 à 13:59
Je vais me permettre de répondre à la place de vbsorcier.
1.609km est la valeur d'un "miles" anglais. En revanche en navigation on utilise le "mile nautique" qui vaut 1.852 km.
zaxoum
Messages postés13Date d'inscriptionmardi 14 novembre 2000StatutMembreDernière intervention18 janvier 2008 29 déc. 2007 à 23:02
@vbsorcier : hum je me pose une question : un mile = 1.609km... pourquoi mets tu ceci " 'On multiplie par 1.853 pour convertir en Km car ce sont des miles" ???!!! o_O
xyp
Messages postés15Date d'inscriptionmardi 16 mars 2004StatutMembreDernière intervention16 avril 2008 21 déc. 2007 à 00:55
Pour répondre à Katsankat, d'après mes souvenirs l'ellipsoide WGS 84 est un système de référence qui est utilisé par les GPS pour déterminer les coordonnées d'un point situé sur la surface du globe, en tenant compte de la forme de la Terre non plus sous forme d'une sphère mais sous forme d'une ellipsoide applatie aux poles et déformée suivant les montagnes et les fosses, la pesanteur terrestre variant etc. Cette ellipsoide a été conçue en 1984 et mise à jour en 1996 en se basant sur les infos transmises par 5 stations au sol (dont aucune en Europe) et qui permet de définir le référentiel coordonnées terrestres mais aussi les orbites empruntées par les 24 satellites GPS.
Cette ellipsoide s'avère utile par exemple dans des calculs maritimes utilisant un relevé GPS et des repports sur des cartes utilisant d'autres référentiels (type référentiel européen). Toutefois il faut convertir les coordonnées WGS 84 reçues par un GPS en coordonnées du pays où l'on se trouve pour pouvoir faire des reports corrects sur des cartes.
L'utilisation de l'ellipsoide WGS 84 est d'un ordre professionnel, le calcul de l'orthodromie par la méthode classique me semble plus appropriée pour l'utilisation couremment faite d'un GPS. De plus c'est elle donnée de base dans les cours de nav aérienne jusqu'à un certain point.
xyp
Messages postés15Date d'inscriptionmardi 16 mars 2004StatutMembreDernière intervention16 avril 2008 20 déc. 2007 à 23:09
Que de complications dans ton code pour le simple calcul d'une distance entre deux points en suivant une orthodromie. L'orthodromie est le trajet le plus court entre deux points situés sur une sphère (mais le cap varie tout le long du trajet); un trajet à ne pas confondre avec une loxodromie plus longue mais dont le cap est constant où que l'on soit situé dessus (sans compter les déclinaisons magnétiques).
'Entrée : A(xa,ya)
' B(xb, yb)
'Sortie : dtom (distance orthodromique entre A et B)
' co (cap orthodromique entre A et B)
'Les coordonnées xa,ya,xb,yb arrivent sur cette fonction sous l'unité 'Degré'
Dim Dl, Alc, RayonSphere
RayonSphere = 6378
'!!! ATTENTION !
'B(xb,yb) est le point origine
'A(xa,ya) est le point destination
pi = 3.1415926536
crd = 180 / pi
cdr = pi / 180
'dtonm est la distance en km entre les deux points
'A (xa,ya) et B(xb,yb)
'Divise par 1.852 pour convertir en Miles Nautiques.
xa xa * cdr: ya ya * cdr: xb = xb * cdr: yb = yb * cdr
Dl = xa - xb
Alc = Sin(yb) * Sin(ya) + Cos(yb) * Cos(ya) * Cos(Dl)
Alc = pi / 2 - Atn(Alc / Sqr(1 - Alc ^ 2))
Dto = RayonSphere * Alc
'co est le cap initial.
Co = (Sin(ya) - Cos(Alc) * Sin(yb)) / (Sin(Alc) * Cos(yb))
Co = pi / 2 - Atn(Co / Sqr(1 - Co ^ 2))
If Cos(ya) * Sin(Dl) * Sin(Alc) < 0 Then Co = 2 * pi - Co
Co = Co * crd
If Co > 360 Then Co = Co - 360
If Co < 0 Then Co = Co + 360
Ne pas oublier d'appliquer au cap la déclinaison magnétique de l'endroit où l'on se trouve. Ces calculs se retrouvent dans tout cours de navigation aérienne.
Si vous êtes intéressés, dites le, je peux aussi vous filer les calculs concernant la loxodromie.
a++
cs_balibalo
Messages postés1Date d'inscriptionmardi 22 juillet 2003StatutMembreDernière intervention11 décembre 2006 11 déc. 2006 à 17:13
Bonjours a tous j'ai testé les 2 versions de fonctions vb pour le calcul de distance entre 2
points geographique,et je n'obtiend jamais le meme resultat quelle est la fonction
qui marche et celle qui marche pas.
VBSorcier
Messages postés102Date d'inscriptionjeudi 31 mars 2005StatutMembreDernière intervention29 avril 2007 7 juin 2006 à 19:31
oué c'est vrai que PI manque, donc pour Revo en haut il faut rajouter
Const PI = 3,1415926535897932384626433832795
oué c'est vrai que la ligne lata-latb=0 on peut la virer mais dans mon appli elle servai à quelque chose, dsl
a+
VBSorcier
cs_revo
Messages postés70Date d'inscriptionsamedi 21 décembre 2002StatutMembreDernière intervention 7 juin 2006 7 juin 2006 à 19:07
VBsorcier, il reste à définir PI et le if latB-lat=0 est en trop car on peut avoir des coordonnées ayant la même latitude
VBSorcier
Messages postés102Date d'inscriptionjeudi 31 mars 2005StatutMembreDernière intervention29 avril 2007 5 juin 2006 à 09:52
tu t'es pas mal compliqué la vie j'ai pas lu ton code en entier et quand j'ai vu sa longueur....
va voir ma source NMEA Analyser ya une fonction de calcul de distance tenant compte de la courbure de la terre
Function Dst_PP(ByVal lonA, ByVal latA, ByVal lonB, ByVal latB) 'As String
rad = PI / 180 'Convertion en radian
lonA = lonA * rad
lonB = lonB * rad
latA = latA * rad
latB = latB * rad
If latB - latA 0 Then Dst_PP 0: Exit Function
Dst_PP = (1 / rad) * 1.853 * 60 * ArcCos(Cos(latA) * Cos(latB) * Cos(lonB - lonA) + Sin(latA) * Sin(latB)) 'On multiplie par 1.853 pour convertir en Km car ce sont des miles
Dst_PP = FormatNumber(Dst_PP, 4)
End Function
Function ArcSin(X)
ArcSin = Atn(X / Sqr(-X * X + 1))
End Function
Function ArcCos(X)
ArcCos = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1)
End Function
ROBIN2
Messages postés3Date d'inscriptiondimanche 16 janvier 2005StatutMembreDernière intervention 5 juin 2006 5 juin 2006 à 08:56
Bonjour,
je voulais vous dire qu'il existe un bouquin nomé "compagnon GPS" dans lequel on trouve toutes les villes françaises avec leurs coordonées géographiques.
Merci pour ton travail, c'est pas mal.
katsankat
Messages postés571Date d'inscriptionvendredi 30 décembre 2005StatutMembreDernière intervention12 juillet 20123 31 mai 2006 à 08:53
Salut :)
C'est du niveau débutant-BALESE-MATHEUX-PRO ! lol
Qu'est ce que l'ellispoide WGS-84?
Aurais-tu un exemple avec deux points que tu connais? Comment obtenir les coordonnées initiales?
Merci d' avance pour toutes ces questions.
25 janv. 2011 à 10:13
16 avril 2008 à 12:31
A(xa,ya), B(xb,yb)
CapLoxo = Atn((xa - xb) / Log(Tan(ya / 2 + pi / 4) / Tan(yb / 2 + pi / 4)))
La distance Loxo ainsi :
DstLoxo = RayonSphere * Abs((ya - yb) / Cos(CapLoxo))
18 janv. 2008 à 14:20
18 janv. 2008 à 13:59
1.609km est la valeur d'un "miles" anglais. En revanche en navigation on utilise le "mile nautique" qui vaut 1.852 km.
29 déc. 2007 à 23:02
21 déc. 2007 à 00:55
Cette ellipsoide s'avère utile par exemple dans des calculs maritimes utilisant un relevé GPS et des repports sur des cartes utilisant d'autres référentiels (type référentiel européen). Toutefois il faut convertir les coordonnées WGS 84 reçues par un GPS en coordonnées du pays où l'on se trouve pour pouvoir faire des reports corrects sur des cartes.
L'utilisation de l'ellipsoide WGS 84 est d'un ordre professionnel, le calcul de l'orthodromie par la méthode classique me semble plus appropriée pour l'utilisation couremment faite d'un GPS. De plus c'est elle donnée de base dans les cours de nav aérienne jusqu'à un certain point.
20 déc. 2007 à 23:09
'Entrée : A(xa,ya)
' B(xb, yb)
'Sortie : dtom (distance orthodromique entre A et B)
' co (cap orthodromique entre A et B)
'Les coordonnées xa,ya,xb,yb arrivent sur cette fonction sous l'unité 'Degré'
Dim Dl, Alc, RayonSphere
RayonSphere = 6378
'!!! ATTENTION !
'B(xb,yb) est le point origine
'A(xa,ya) est le point destination
pi = 3.1415926536
crd = 180 / pi
cdr = pi / 180
'dtonm est la distance en km entre les deux points
'A (xa,ya) et B(xb,yb)
'Divise par 1.852 pour convertir en Miles Nautiques.
xa xa * cdr: ya ya * cdr: xb = xb * cdr: yb = yb * cdr
Dl = xa - xb
Alc = Sin(yb) * Sin(ya) + Cos(yb) * Cos(ya) * Cos(Dl)
Alc = pi / 2 - Atn(Alc / Sqr(1 - Alc ^ 2))
Dto = RayonSphere * Alc
'co est le cap initial.
Co = (Sin(ya) - Cos(Alc) * Sin(yb)) / (Sin(Alc) * Cos(yb))
Co = pi / 2 - Atn(Co / Sqr(1 - Co ^ 2))
If Cos(ya) * Sin(Dl) * Sin(Alc) < 0 Then Co = 2 * pi - Co
Co = Co * crd
If Co > 360 Then Co = Co - 360
If Co < 0 Then Co = Co + 360
Ne pas oublier d'appliquer au cap la déclinaison magnétique de l'endroit où l'on se trouve. Ces calculs se retrouvent dans tout cours de navigation aérienne.
Si vous êtes intéressés, dites le, je peux aussi vous filer les calculs concernant la loxodromie.
a++
11 déc. 2006 à 17:13
points geographique,et je n'obtiend jamais le meme resultat quelle est la fonction
qui marche et celle qui marche pas.
7 juin 2006 à 19:31
Const PI = 3,1415926535897932384626433832795
oué c'est vrai que la ligne lata-latb=0 on peut la virer mais dans mon appli elle servai à quelque chose, dsl
a+
VBSorcier
7 juin 2006 à 19:07
5 juin 2006 à 09:52
va voir ma source NMEA Analyser ya une fonction de calcul de distance tenant compte de la courbure de la terre
http://www.vbfrance.com/codes/NMEA-ANALYSER-TRACAGE-PARCOURS-2D-3D-EXPORTATION-EXCEL_36528.aspx
Function Dst_PP(ByVal lonA, ByVal latA, ByVal lonB, ByVal latB) 'As String
rad = PI / 180 'Convertion en radian
lonA = lonA * rad
lonB = lonB * rad
latA = latA * rad
latB = latB * rad
If latB - latA 0 Then Dst_PP 0: Exit Function
Dst_PP = (1 / rad) * 1.853 * 60 * ArcCos(Cos(latA) * Cos(latB) * Cos(lonB - lonA) + Sin(latA) * Sin(latB)) 'On multiplie par 1.853 pour convertir en Km car ce sont des miles
Dst_PP = FormatNumber(Dst_PP, 4)
End Function
Function ArcSin(X)
ArcSin = Atn(X / Sqr(-X * X + 1))
End Function
Function ArcCos(X)
ArcCos = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1)
End Function
5 juin 2006 à 08:56
je voulais vous dire qu'il existe un bouquin nomé "compagnon GPS" dans lequel on trouve toutes les villes françaises avec leurs coordonées géographiques.
Merci pour ton travail, c'est pas mal.
31 mai 2006 à 08:53
C'est du niveau débutant-BALESE-MATHEUX-PRO ! lol
Qu'est ce que l'ellispoide WGS-84?
Aurais-tu un exemple avec deux points que tu connais? Comment obtenir les coordonnées initiales?
Merci d' avance pour toutes ces questions.