OdarR a écrit :
On 18 mai, 11:15, kael <k...@alussinan.org> wrote:
Bonjour,
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é.
--
kael
j'ai du jouer avec ça l'année passée, dans le domaine GSM,
pour calculer quelles antennes "voient" une maison ou une zone
particulière.
je me suis pas mal inspiré de cette page :
http://www.movable-type.co.uk/scripts/latlong.html
beaucoup de plaisir en perspective. :-)
l'idée est aussi de passer dans un systeme de coordonées plan
pour simplifier les calculs lorsque la précision à quelques mètres
suffit.
Mmm... je voulais pas intervenir, mais l'ensemble de ces formules est assez facile à réétablir : en coordonnées sphériques "normalisées", on a x= cos Lo cos La ,y= sin Lo cos La , z= sin La, où Lo est la longitude et La la latitude (en radians ou prendre les fonctions trigo en degrés aussi), et alors la distance de deux points est R alpha (où R est le rayon terrestre), l'angle alpha les séparant vérifiant cos alpha = (xx+yy'+zz'). Il est tout à fait inutile de se simplifier encore la vie avec des formules approchées, puisque n'importe quelle calculette donnera ces valeurs instantanément.
Mais il y a un énorme mais : la précision est très médiocre, contrairement à ce que dit le site anglais mentionné plus haut : la terre est un ellipsoide, et l'aplatissement aux pôles est de près de 1/300, ce qui modifie considérablement ces formules (de près de 100 kms pour la distance des pôles)...
Olivier