Bonjour,
Il faut chercher la formule "haversine". Il y a de nombreux exemples de codage sur le net.
Pour ma part, j'utilise une version qui est une approximation de la formule et donc pas la distance réelle mais suffit pour l'application dont j'ai besoin : trouver les codes postaux dans un rayon de n kms autour d'une commune donnée. Je n'ai pas besoin de la précision au cm!
Sinon :
http://en.wikipedia.org/wiki/Haversine_formula
et c'est Geopy :
http://exogen.case.edu/projects/geopy/
Cordialement,
Alain
CREATE OR REPLACE FUNCTION haversine(double precision, double precision, double precision, double precision)
RETURNS double precision AS
'
/*
Retourne la distance Haversine deux points
Appel : Latitude1,Longitude1, Latitude2, Longitude2 en degrés, min.
Retourne : distance en kms.
*/
DECLARE
Latitude1 alias for $1;
Longitude1 alias for $2;
Latitude2 alias for $3;
Longitude2 alias for $4;
distance float8;
BEGIN
distance := 6372.795 * 3.1415926 *
sqrt(
(Latitude1-Latitude2)*(Latitude1-Latitude2)
+
cos(Latitude1/57.29578)*cos(Latitude2/57.29578)*(Longitude1-Longitude2)*(Longitude1-Longitude2) )
/ 180;
return distance;
END;
'
LANGUAGE 'plpgsql' VOLATILE STRICT;
kael a écrit :
Je cherche une formule pour calculer en Python la distance entre deux points à partir de leurs coordonnées géographiques.
Plus précisément, à partir d'une liste de points définis par un couple latitude/longitude, je souhaite savoir quels sont les n points les plus proches d'un point donné.