Vous êtes ici Codes PHP et MySQL > Maths > Distance en mètre entre deux points avec...

 

Distance en mètre entre deux points avec coordonnées GPS

Cette fonction permet de calculer la distance en mètres entre deux points dont on connaît la latitude et la longitude en degrés décimaux.
L'exemple ci-dessous permet de calculer la distance à vol d'oiseau entre Paris(lat = 48.856667, lng = 2.350987) et Lyon (lat = 45.767299, lng = 4.834329). Le resultat est affiché en kilomètres.
 
forty
Site de l'auteur voir
[23] sources en PHP voir
Code vu 39659 fois
Enregistré le 25 Sept 2008
  • Digg ce code sur digg.com
  • Bookmark ce code sur del.icio.us
  • Bookmark ce code sur Google
  • Bookmark ce code sur Yahoo
  • Ajoute Distance en mètre entre deux points avec coordonnées GPS
  • Partage ce code sur Facebook
 
 
 
 

Code Source


01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
 
<?php
/******************************************************************************/
/*                                                                            */
/*                       __        ____                                       */
/*                 ___  / /  ___  / __/__  __ _____________ ___               */
/*                / _ \/ _ \/ _ \_\ \/ _ \/ // / __/ __/ -_|_-<               */
/*               / .__/_//_/ .__/___/\___/\_,_/_/  \__/\__/___/               */
/*              /_/       /_/                                                 */
/*                                                                            */
/*                                                                            */
/******************************************************************************/
/*                                                                            */
/* Titre          : Distance en mètre entre deux points avec coordonnées...   */
/*                                                                            */
/* URL            : http://www.phpsources.org/scripts459-PHP.htm              */
/* Auteur         : forty                                                     */
/* Date édition   : 25 Sept 2008                                              */
/* Website auteur : http://www.toplien.fr/                                    */
/*                                                                            */
/******************************************************************************/

// renvoi la distance en mètres
function get_distance_m($lat1$lng1$lat2$lng2) {
  $earth_radius 6378137;   // Terre = sphère de 6378km de rayon
  $rlo1 deg2rad($lng1);
  $rla1 deg2rad($lat1);
  $rlo2 deg2rad($lng2);
  $rla2 deg2rad($lat2);
  $dlo = ($rlo2 $rlo1) / 2;
  $dla = ($rla2 $rla1) / 2;
  $a = (sin($dla) * sin($dla)) + cos($rla1) * cos($rla2) * (sin($dlo) * sin($dlo
));
  $d atan2(sqrt($a), sqrt($a));
  return ($earth_radius $d);
}

echo (round(get_distance_m(48.8566672.35098745.7672994.834329) / 10003))
 . ' km';
// affiche 391.613 km
?>

 

Fonctions du code

: Convertit un nombre de degrés en radians - (PHP 4, PHP 5)
: Cosinus - (PHP 4, PHP 5)
: Sinus - (PHP 4, PHP 5)
: Arc tangent de deux variables - (PHP 4, PHP 5)
: Racine carrée - (PHP 4, PHP 5)
: Affiche une chaîne de caractères - (PHP 4, PHP 5)
: -
Commentaires
 
Problème inverse :

Connaissant les coordonnées GPS d'une commune ($lat1, $lng1), comment déterminer les latitudes min et max, et les longitudes min et max, d'un cercle de rayon donné (par exemple 20km) dont le centre est ($lat1, $lng1) ?
Autrement dit, comment pouvoir déterminer les communes situées autour d'une commune donnée dans un rayon de 20km ?

Merci d'avance pour vos réponses.
 
Comment peut-on convertir des coordonnées polaires en des coordonnées cartésiennes
 
 Les coordonnées polaires sont constituées, avec un point de départ, d'une distance et d'un angle en radian.

Tu sais que la-dite distance est le module, c'est -à dire racine carrée de la somme des carrés de x et y.

 

Si tu suis la règle du triangle rectangle, tu as cos de l'angle qui est égal à l'abscisse x sur la longueur ( côté adjacent sur l'hypothénuse si mes ouvenirs sont bons. De là, tu tires x et y, d'où les coordonées carthésiennes.

 

Cordialement
 
Bonjour

Le calcul fonctionne sur firefox et non sur ie ou chrome.
 
N'importe quoi, un langage serveur s'exécute indépendamment du navigateur.
 
Bonjour comment faire pour afficher le résultat en mètre parcque là, c'est en km.
 
Pour mémoire 1 km = 1000 mètres

En plus c'est bien indiqué que la fonction retourne des mètres.

Il suffit donc de supprimer la division par 1000 :

echo (round(get_distance_m(48.8566672.35098745.7672994.834329) / 10003))  . km'; 

Ce qui donne avec cet exemple :

 

echo get_distance_m(48.8566672.35098745.7672994.834329)' m'; 

J'ai supprimé l'arrondi mais tu peux le laisser avec 0 décimales pour avoir des mètres sans virgule.

 
 
Merci.
Encore une autre question même si ça ne concern pas le sujet, comment faire pour récuperer les coordonnées GPS d'un telephone en php. Le but c'est que lorsqu'un téléphone se connecte sur le site, le site demande d'abord à l'utilisateur s'il accepte d'envoyer ses coordonnées (laitiude,longitude) au site puis le site récupère ces coordonnées puis renvoye les distance et les endroits le plus proches qu'il cherche.
Est-ce possible en php?
 
Ajouter un commentaire
Code de sécurité

Attention: Les champs marqués d'une étoile * sont obligatoires
 

Connexion

 
 

Maths

 
 

PHP

 
 
        Publicité