Distance intervilles avec coordonnees GPS

Fermé
Marc - Modifié par Marc le 24/06/2010 à 15:10
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 - 29 juin 2010 à 11:03
Bonjour,


Je m'efforce de calculer la distance entre deux villes à partir de coordonnées GPS.

Soit Brest et Strasbourg. j'ai récupéré les infos sur wikipedia et vérifié avec Google Earth.

Brest :
Latitude : 48° 23? 27? Nord => 48 + 23/60 + 27/3600 = 48.390833
Longitude : 4° 29? 08? Est => 4 + 29/60 + 8/3600 = - 4.485555

Strasbourg :
Latitude : 48° 35? 04? Nord => 48 + 35/60 + 4/3600 = 48.584444
Longitude : 7° 44? 55? Est => 7 + 44/60 + 55/3600 = 7.74861

Calcul de la distance entre P1(x1,y1) et P2(x2,y2) :
d = Racine ( (x2-x1)^2 + (y2-y1)^2 )
d = Racine ( (48.58 - 48.39)^2 + (7.74 + 4.48)^2) = 12.2356
J'obtiens donc une distance 'd' de 12.2356.

Maintenant, je convertis en km. Je considère un rayon R de 6370 km. Je rappelle que la longueur d'un arc est (angle) x R. Et je fais une règle de 3 pour revenir aux radians.
d x R x 2PI / 360 = 12.2356 x 6370 x 2 x PI / 360 = 1360 km !!
Selon Earth : 920 km en ligne droite
Selon Maps : 1070 km
Et sur un autre site c'est 927 km.

Où est donc mon erreur ?
A voir également:

6 réponses

La Terre n'est pas ronde
24 juin 2010 à 14:54
Wikipédia : Calcul distance ente deux coordonnées géographiques
0
Ouais, booon, d'accord pour l'aspect patatoïde, mais tout de même j'ai bien dû commettre une petite erreur mathématique, non ?
0
La Terre n'est pas ronde
24 juin 2010 à 16:19
d'où le cosinus supplémentaire dans les calculs de longitude dans le lien du précédent post et donc le calcul de la norme à la fin.
0
=> La Terre n'est pas ronde

J'ai repris les formules et j'arrive à un résultat de 1336 km.

En javascript :

var iEarthR = 6378.137;

var iThetaLatitude = oPoint2.latitude.value - oPoint1.latitude.value;
var iThetaLongitude = oPoint2.longitude.value - oPoint1.longitude.value;

var iDeltaLatitude = iThetaLatitude*iEarthR*Math.PI/180;
var iDeltaLongitude = iThetaLongitude*iEarthR*Math.cos(iThetaLatitude)*Math.PI/180;

var iDistanceKm = Math.sqrt( iDeltaLatitude*iDeltaLatitude + iDeltaLongitude*iDeltaLongitude );

et d'où un résultat de 1336 km.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
25 juin 2010 à 01:24
Si le calcul:
d = Racine ( (x2-x1)^2 + (y2-y1)^2 )
est juste pour deux points sur un même plan, il est faux pour deux angles dans l'espace.
Supposons deux points situés très près du pôle Nord (lattitude proche de 90°) l'un étant à la longitude 0° et l'autre à la longitude 90°. D'après ton calcul:
d = Racine((0-90)^2 + (90-90)^2) soit 90°. Or l'angle, vu du centre de la terre sera proche de 0° ... !!!
D'autre part tu définis une distance 'd' que tu prends ensuite pour un angle...
Bonne réflexion.
0
=> Loupius

Yep pour le calcul initial, mais j'ai ensuite repris la technique spécifiée par "La Terre n'est pas ronde " sur la page de wikipedia :

http://fr.wikipedia.org/wiki/Calcul_distance_ente_deux_coordonn%C3%A9es_g%C3%A9ographiques

Et j'arrive à un résultat surprenant. Il doit bien y avoir une erreur, mais je n'arrive pas à trouver où. C'est curieux et frustrant à la fois.
0
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
29 juin 2010 à 11:03
Brest : Latitude : 48° 23? 27? Nord, Longitude : 4° 29? 08? Est
Un détail: Brest est à l'Ouest de Greenwitch.
La formule utilisée me semble douteuse. Essaye plutôt cette formule trouvée sur le net:
R Arccos (sin(lat A)sin(lat B)+cos(lat A)cos(lat B)cos(long A- long B))
Ainsi tu devrais trouver 902 km.
Bonne continuation.
0