Effectuer le calcul de la distance à l'aide d'Excel?

8

Existe-t-il un moyen (de préférence dans Excel) de calculer la distance (basée sur lat, lon) entre deux listes de points?

Mon objectif final serait, par exemple, d'avoir une liste de Starbucks et une liste de McDonald's, puis de montrer le voisin le plus proche, si vous voulez.

b-rad-b
la source
Je recherche une distance minimale.
b-rad-b
Par quelle unité, retournera la distance?
Jeed
@Jeed Toute unité irait bien, probablement des miles dans ce cas.
b-rad-b

Réponses:

16

Étant donné une liste de paires de coordonnées géographiques, vous pouvez implémenter la formule Haversine directement dans Excel.


La façon la plus simple d'utiliser cette formule (ou une formule plus précise, mais je pense que ce n'est pas votre cas) consiste à appuyer sur Alt+F11pour ouvrir l'éditeur VBA, à cliquer Insert --> Modulepuis à (copier et) coller par exemple le code aimablement suggéré par blah238.

Public Function getDistance(latitude1, longitude1, latitude2, longitude2)  
earth_radius = 6371  
Pi = 3.14159265  
deg2rad = Pi / 180  

dLat = deg2rad * (latitude2 - latitude1)  
dLon = deg2rad * (longitude2 - longitude1)  

a = Sin(dLat / 2) * Sin(dLat / 2) + Cos(deg2rad * latitude1) * Cos(deg2rad * latitude2) * Sin(dLon / 2) * Sin(dLon / 2)  
c = 2 * WorksheetFunction.Asin(Sqr(a))  

d = earth_radius * c  

getDistance = d  

End Function

Il y aura une nouvelle getDistancefonction personnalisée (unité = kilomètre) disponible dans votre feuille de calcul qui accepte quatre paramètres, à savoir les deux paires de coordonnées, comme suit:

getDistance(latitude1, longitude1, latitude2, longitude2)

latitude1, longitude1, latitude2, longitude2doit être remplacé par leurs références de cellule relatives.

entrez la description de l'image ici

Antonio Falciano
la source
3
Lien direct: codecodex.com/wiki/…
blah238
@ blah238 Merci pour votre suggestion. J'ai ajouté un petit guide pratique pour le faire fonctionner.
Antonio Falciano
1
@afalciano Merci pour le parcours et le code. Ma question est cependant quelles sont les unités ultimes de cette équation? est-ce des mètres?
Kerry
@Kerry C'est des kilomètres. De plus, là où la formule dit "Sqr", ce devrait être "Sqrt".
ddunn801
L'unité de mesure des distances est le kilomètre, tout comme le rayon de la Terre.
Antonio Falciano
3

Une manière plus précise consiste à utiliser la formule de Vicenty . Il est basé sur un ellipsoïde au lieu d'une sphère. Cependant, la réponse précédente fera l'affaire si vous travaillez dans une ville (les différences peuvent être négligées dans votre cas). J'ai trouvé un code excel vb ici juste au cas où.

Notez que si vous travaillez dans une ville, l'utilisation de distances de «vol d'oiseau» peut être trompeuse. Il serait préférable d'utiliser les distances du réseau. Un compromis consiste à utiliser "Manhattan distance"

radouxju
la source