Calculer distance d'un tracé GPS

Calculer distance d'un tracé GPS - PHP - Programmation

Marsh Posté le 08-02-2011 à 12:58:05    

Bonjour,
 
J'utilise l'API Google Map sur mon site web. J'y dépose des tracé GPS obtenu à partir de fichier GPX. Les fichiers sont sous cette forme :
 

Code :
  1. 1er point GPS :
  2. <trkpt lat="xx.xxxxxxxx" lon="x.xxxxxxxx" >
  3. <ele>85.316</ele>
  4. <time>2009-05-21T13:17:22Z</time>
  5. <name>trkpt-2009-05-21T13:17:22Z</name>
  6. </trkpt>
  7. 2ème point GPS :
  8. <trkpt lat="xx.xxxxxxxx" lon="x.xxxxxxxx" >
  9. <ele>86.391</ele>
  10. <time>2009-05-21T13:17:28Z</time>
  11. <name>trkpt-2009-05-21T13:17:28Z</name>
  12. </trkpt>
  13. et ainsi de suite (il y en a beaucoup)


 
J'arrive à afficher le tracé sur ma carte mais je n'arrive pas à trouver la solution pour calculer la distance totale du tracé. Est-ce qu'il y a quelque chose de prévu par l'API Google map pour calculer ça ? Ou bien connaissant la latitude et la longitude de chacun des points, peut-on faire un calcul "maison" (sachant qu'il y aura un gros traitement derrière) ?
 
Merci pour votre aide !

Reply

Marsh Posté le 08-02-2011 à 12:58:05   

Reply

Marsh Posté le 08-02-2011 à 14:39:39    

je sais pas si c'est prévu par l'api google (sans doute avec le système d'itinéraire) , mais sinon c'est l'enfance de l'art : wikipédia -> thérorème de pythagore, après t'as juste a trouvé la correspondance entre les degrés et des km.


---------------
Créer votre blog gratuitement
Reply

Marsh Posté le 08-02-2011 à 14:59:51    

Bein oui ... tu prends tes points 2 à 2, Pythagore et c'est expédié


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 08-02-2011 à 15:48:01    

pour convertir tes long/lat en coordonnées projetées, tu peux utiliser ceci :
http://fr.wikipedia.org/wiki/Proje [...] de_Lambert
et choisir le CC le plus proche de chez toi


Message édité par rengzehn le 08-02-2011 à 15:48:11
Reply

Marsh Posté le 08-02-2011 à 16:00:52    

À mon avi s'il s'agit de coordonnées GPS d'un homme ou d'une voiture, pas besoin de passer par là car le sin phi ~ phi .
Par contre si c'est pour un avion, là ça peut s justifier


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 09-02-2011 à 22:44:35    

ok merci les gars. J'ai trouvé un bon petit script sur le net (pour ceux que ça intéresse) :

 
Code :
  1. function get_distance_m($lat1, $lng1, $lat2, $lng2) {
  2.   $earth_radius = 6378137;   // Terre = sphère de 6378km de rayon
  3.   $rlo1 = deg2rad($lng1);
  4.   $rla1 = deg2rad($lat1);
  5.   $rlo2 = deg2rad($lng2);
  6.   $rla2 = deg2rad($lat2);
  7.   $dlo = ($rlo2 - $rlo1) / 2;
  8.   $dla = ($rla2 - $rla1) / 2;
  9.   $a = (sin($dla) * sin($dla)) + cos($rla1) * cos($rla2) * (sin($dlo) * sin($dlo
  10. ));
  11.   $d = 2 * atan2(sqrt($a), sqrt(1 - $a));
  12.   return ($earth_radius * $d);
  13. }
  14. echo (round(get_distance_m(48.856667, 2.350987, 45.767299, 4.834329) / 1000, 3))
  15. . ' km';
  16. // affiche 391.613 km
  17. ?>
 

Source : http://www.phpsources.org/scripts459-PHP.htm

 

Il suffit ensuite de faire passer les points 2 par 2 en faisant la somme de tous les segments.

 

Merci A+


Message édité par Magg27 le 09-02-2011 à 22:45:49
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed