MySQL : coordonnées GPS, trouver les entrées proches d'une entrée

MySQL : coordonnées GPS, trouver les entrées proches d'une entrée - SQL/NoSQL - Programmation

Marsh Posté le 15-07-2016 à 14:21:24    

Salut,
 
J'ai une table avec des villes et leur coordonnées GPS.
Je voudrais pouvoir faire une requête qui liste les villes aux alentours d'une ville.
 
Exemple : la liste des 10 villes les plus proches de Nice, tout ça en se basant sur les coordonnées GPS
 
Par contre j'arrive même pas à comprendre comment faire. Une piste ?
 
Merci!


---------------
Bha ouais mais bon, m'enfin quoi...
Reply

Marsh Posté le 15-07-2016 à 14:21:24   

Reply

Marsh Posté le 15-07-2016 à 18:16:36    

Calculer les distances des autres villes avec Nice et faire un tri tout simplement.

Reply

Marsh Posté le 15-07-2016 à 18:47:08    

Calculer les distances entre deux villes, en mysql, c'est effectivement tout l'objet du topic. :D


---------------
Bha ouais mais bon, m'enfin quoi...
Reply

Marsh Posté le 15-07-2016 à 18:53:18    

Ben tu cherches sur le net la formule qui donne la distance entre 2 points à partir des coordonnées gps et tu la codes en mysql. :D

 

indice : orthodromie


Message édité par Totoche17 le 15-07-2016 à 18:54:48
Reply

Marsh Posté le 15-07-2016 à 19:12:30    

vanquishV12 a écrit :

Salut,
 
J'ai une table avec des villes et leur coordonnées GPS.
Je voudrais pouvoir faire une requête qui liste les villes aux alentours d'une ville.
 
Exemple : la liste des 10 villes les plus proches de Nice, tout ça en se basant sur les coordonnées GPS
 
Par contre j'arrive même pas à comprendre comment faire. Une piste ?
 
Merci!


Code :
  1. CREATE DEFINER=`root`@`%` FUNCTION `get_distance_metres`(lat1 DOUBLE, lng1 DOUBLE, lat2 DOUBLE, lng2 DOUBLE) RETURNS DOUBLE
  2. BEGIN
  3.  DECLARE rlo1 DOUBLE;
  4.     DECLARE rla1 DOUBLE;
  5.     DECLARE rlo2 DOUBLE;
  6.     DECLARE rla2 DOUBLE;
  7.     DECLARE dlo DOUBLE;
  8.     DECLARE dla DOUBLE;
  9.     DECLARE a DOUBLE;
  10.    
  11.     SET rlo1 = RADIANS(lng1);
  12.     SET rla1 = RADIANS(lat1);
  13.     SET rlo2 = RADIANS(lng2);
  14.     SET rla2 = RADIANS(lat2);
  15.     SET dlo = (rlo2 - rlo1) / 2;
  16.     SET dla = (rla2 - rla1) / 2;
  17.     SET a = SIN(dla) * SIN(dla) + COS(rla1) * COS(rla2) * SIN(dlo) * SIN(dlo);
  18.     RETURN (6378137 * 2 * ATAN2(SQRT(a), SQRT(1 - a)));
  19.     END$$
  20. DELIMITER ;

Reply

Sujets relatifs:

Leave a Replay

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