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

  Information

Cette fonction calcule la distance en mètres à vol d'oiseau entre deux points dont on connait la latitude et la longitude en degrés décimaux.

L'exemple calcule la distance à vol d'oiseau entre Paris (lat = 48.856667, lng = 2.350987) et Lyon (lat = 45.767299, lng = 4.834329).

echo (round(get_distance_m(48.856667, 2.350987, 45.767299, 4.834329) / 1000, 3)) . ' km';

Le résultat est affiché en kilomètres:

// affiche 391.613 km

  code source classé dans  Mathématiques

 
 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    
                               
<?php
/*---------------------------------------------------------------*/
/*
    Titre : Distance en mètre entre deux points avec coordonnées GPS                                                    
                                                                                                                          
    URL   : https://phpsources.net/code_s.php?id=459
    Auteur           : forty                                                                                              
    Website auteur   : http://www.toplien.fr/                                                                             
    Date édition     : 25 Sept 2008                                                                                       
    Date mise à jour : 10 Aout 2019                                                                                      
    Rapport de la maj:                                                                                                    
    - fonctionnement du code vérifié                                                                                    
    - modification de la description                                                                                      
*/
/*---------------------------------------------------------------*/
    // 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);
    }
?>

Exemple :

 
 01    
 02    
 03    
 04    
 05    
 06    
 07    
                                
<?php
    echo (round(get_distance_m(48.8566672.35098745.7672994.834329) / 1000,
 3)). ' km';
    // affiche 391.613 km
?>

          Fonctions du code - Doc officielle PHP

   php.net   Description Versions PHP OUTIL
   atan2 Arc tangent de deux variables PHP 4, PHP 5, PHP 7, PHP 8
   cos Cosinus PHP 4, PHP 5, PHP 7, PHP 8
   deg2rad Convertit un nombre de degrés en radians PHP 4, PHP 5, PHP 7, PHP 8
   echo Affiche une chaîne de caractères PHP 4, PHP 5, PHP 7, PHP 8
   return Retourne le controle du programme au module appelant. PHP 4, PHP 5, PHP 7, PHP 8
   round Arrondi un nombre à virgule flottante PHP 4, PHP 5, PHP 7, PHP 8
   sin Sinus PHP 4, PHP 5, PHP 7, PHP 8
   sqrt Racine carrée PHP 4, PHP 5, PHP 7, PHP 8

   Dites merci aux auteurs pour leurs travail, ça ne coûte rien et ça fait toujours plaisir wink

[13]

  • avatar

    Invité

    26 Aout 2021 à 01:03

    Merci bien pour le code bien clair et compréhensible

  • avatar

    Invité

    06 Juin 2020 à 18:56

    Merci pour ces explications, existe aussi pour mysql, et si il y a l'erreur 1418 il faut ajouter avant la requete : SET GLOBAL log_bin_trust_function_creators = 1;

  • avatar

    Invité

    08 Fév 2020 à 21:37

    Merci bcp pour cette explication

  • avatar

    Invité

    04 Nov 2019 à 11:36

    Merci beaucoup pour ce code !   

  • avatar

    Forty

    17 Déc 2013 à 08:37

    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.
     

  • avatar

    Invité

    17 Déc 2013 à 07:50

    Bonjour comment faire pour afficher le résultat en mètre parcque là, c'est en km.

  • avatar

    Invité

    10 Oct 2013 à 22:33

    N'importe quoi, un langage serveur s'exécute indépendamment du navigateur.

  • avatar

    Invité

    28 Aout 2013 à 10:37

    Bonjour
    Le calcul fonctionne sur firefox et non sur ie ou chrome.

  • avatar

    Invité

    16 Jan 2011 à 11:38

     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

  • avatar

    Invité

    30 Aout 2010 à 15:38

    Comment peut-on convertir des coordonnées polaires en des coordonnées cartésiennes

  • avatar

    Forty

    20 Jan 2010 à 11:09

    la solution est ici : Calcul de la Distance entre deux coordonnées GPS avec MySQL

  • avatar

    Invité

    20 Jan 2010 à 11:00

    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.

  • avatar

    Forty

    19 Oct 2009 à 11:36

    Il y a une version MySQL ici : Calcul de la Distance entre deux coordonnées GPS avec MySQL


 Autres snippets qui pourraient vous intéressez

Calcul la distance entre 2 points en km - PHP Sources

Compatibilité : PHP 5, PHP 7

Ce source calcule la distance entre deux paires de coordonnées de latitude et de longitude. Renvoie la distance en miles ou en kilomètres.

Calcul si deux nombres sont premiers entre eux

Compatibilité : PHP 5, PHP 7

Détermine si deux nombres sont premiers entre eux. 2 nombres entiers sont premiers entre eux si leur PGCD vaut 1

Conversion de coordonnées polaires en cartésiennes

Compatibilité : PHP 5, PHP 7

Convertit des coordonnées polaires en coordonnées cartésiennes. Retourne un tableau associatif.

Conversion coordonnées cartésiennes en polaire

Compatibilité : PHP 5, PHP 7

Convertit des coordonnées cartésiennes en coordonnées polaires. Retourne un tableau associatif.

Arrondi 1 distance en mètre ou en kilomètre

Compatibilité : PHP 5, PHP 7

Prend en paramètre 1 distance en mètres et retourne 1 chaine de caractères contenant une distance en mètres ou en kilomètres.

Présentation de PHP

PHP débutant et initié 50 Tutoriel

Présentation de MySQL

avatar

Forty

  25 Sept 2008

  SOURCE   Télécharger

Information sur les mises à jour

Dernière mise à jour :

    10 Aout 2019
    fonctionnement du code vérifié
    modification de la description

87 589 Vues
Compatibilité
PHP 5, 7 et 8+
avatar
46 codes

Catégorie :  Mathématiques

Affiche la série de Fibonacci
Affiche les nombres premiers compris entre 0 à $n
Affiche toute les racines carrés à partir d'un entier
Améliore la fonction PHP Floor () avec Précision
Arrondi au multiple supérieur
Arrondi un nombre entier et décimal
Calcul de l'équation de la droite de régression linéaire
Calcul des modules et arguments d'un nombre complexe, saisi arithmétiquement
Calcul du nombre Pi à l'infini
Calcul du triangle de pascal
Calcul l'hypoténuse de 2 nombres
Calcul la distance entre 2 points en km
Calcul la factorielle de manière récursive
Calcul la liste des nombres premiers
Calcul la puissance d'un nombre
Calcul la racine carré d'un nombre
Calcul le carré d'un nombre entier ou décimal
Calcul le carré, cube et racine carrée via un formulaire
Calcul le cube d'un nombre
Calcul le PGCD de 2 entiers
Calcul le PPCM de 2 entiers
Calcul le sinus en radian
Calcul les diviseurs d'un entier
Calcul les pourcentages
Calcul les taux d'intéret en PHP
Calcul si deux nombres sont premiers entre eux
Calculs sur 1 Triangle avec le théorème de Pythagore
Conversion binaire <-> décimal ET hexadécimal <-> décimal
Conversion de coordonnées cartésiennes en polaire
Conversion de coordonnées polaires en cartésiennes
Distance en mètre entre deux points avec coordonnées GPS
Divise 2 nombres avec $a et $b en paramètre
Division avec calcul du reste
Division euclidienne avec Quotient et Reste dans un tableau
Elever $x à  la puissance $y
Fonction récursive calculant la factorielle d'un nombre.
Fractionne en PHP 1 nombre en dividende et quotient
Liste des nombres parfaits
Max2scale ext PHP
Passe 1 entier base 10 en base 2
Régression Polynomiale de degré 3
Régression Polynomiale de degré 4
Trouve une distance euclidienne en PHP
Vérifie la parité d'un nombre
Vérifie si un entier est pair ou impair avec le modulo
Vérifie si un nombre est multiple d'un autre