DONNE LA DISTANCE (EN M) ENTRE DEUX POINTS DE COORDONNÉES GÉOGRAPHIQUES CONNUES

katsankat Messages postés 571 Date d'inscription vendredi 30 décembre 2005 Statut Membre Dernière intervention 12 juillet 2012 - 31 mai 2006 à 08:53
mdegremo Messages postés 17 Date d'inscription jeudi 21 août 2008 Statut Membre Dernière intervention 10 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.

https://codes-sources.commentcamarche.net/source/37841-donne-la-distance-en-m-entre-deux-points-de-coordonnees-geographiques-connues

mdegremo Messages postés 17 Date d'inscription jeudi 21 août 2008 Statut Membre Dernière intervention 10 septembre 2011
25 janv. 2011 à 10:13
STP, j'ai un peu de mal pour réaliser la forme, que dois je mettre comme Textbox et script dans la fonction clic ?
xyp Messages postés 15 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 16 avril 2008
16 avril 2008 à 12:31
On vient de me demander par mail comment calculer la distance loxo entre deux points sur une sphère. C'est assez simple :

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))
zaxoum Messages postés 13 Date d'inscription mardi 14 novembre 2000 Statut Membre Dernière intervention 18 janvier 2008
18 janv. 2008 à 14:20
Merci pour cette précision !
xyp Messages postés 15 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 16 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és 13 Date d'inscription mardi 14 novembre 2000 Statut Membre Dernière intervention 18 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és 15 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 16 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és 15 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 16 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és 1 Date d'inscription mardi 22 juillet 2003 Statut Membre Dernière intervention 11 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és 102 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 29 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és 70 Date d'inscription samedi 21 décembre 2002 Statut Membre Derniè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és 102 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 29 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

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
ROBIN2 Messages postés 3 Date d'inscription dimanche 16 janvier 2005 Statut Membre Derniè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és 571 Date d'inscription vendredi 30 décembre 2005 Statut Membre Dernière intervention 12 juillet 2012 3
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.
Rejoignez-nous