Existe-t-il un moyen (de préférence dans Excel) de calculer la distance (basée sur la latitude, la longitude) entre deux listes de points?
Mon objectif final serait, par exemple, davoir une liste de Starbucks et une liste de McDonald « , puis dafficher le voisin le plus proche, si vous voulez.
Commentaires
- Je ' m recherche la distance minimale.
- Par quel unet, retournera la distance?
- @Jeed Nimporte quelle unité conviendrait, probablement des miles dans ce cas.
Réponse
À partir dune liste de paires de coordonnées géographiques, vous pouvez mettre en œuvre la formule Haversine directement dans Excel.
La façon la plus simple dutiliser cette formule (ou une formule plus précise, mais je pense que ce nest pas votre cas) consiste à appuyer sur Alt+F11
pour ouvrir léditeur VBA, cliquez sur Insert --> Module
puis (copiez et) collez 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 fonction getDistance
personnalisée (unit = kilomètre) disponible dans votre feuille de calcul qui en accepte quatre paramètres, cest-à-dire les deux paires de coordonnées, comme suit:
getDistance(latitude1, longitude1, latitude2, longitude2)
où latitude1, longitude1, latitude2, longitude2
doit être remplacé par leur relatif références de cellule.
Commentaires
- Direct lien: codecodex.com/wiki/…
- @ blah238 Merci pour votre suggestion. Jai ' ajouté un petit guide pratique pour le faire fonctionner.
- @afalciano Merci pour la visite & code. Ma question est cependant de savoir quelles sont les unités ultimes de cette équation? est-ce des mètres?
- @Kerry It ' s kilomètres. De plus, là où la formule indique " Sqr ", cela devrait être " Sqrt ".
- Lunité de mesure des distances est le kilomètre, tout comme le rayon de la Terre.
Réponse
Une méthode plus précise consiste à utiliser la formule de Vicenty « . Elle est basée sur un ellipsoïde au lieu dun Cependant, la réponse précédente fera laffaire si vous travaillez dans une ville (les différences peuvent être négligées dans votre cas). Jai trouvé un code vb excel ici juste au cas où.
Notez que si vous travaillez dans une ville, lutilisation de distances de « vol doiseau » peut être trompeuse. Il serait préférable dutiliser les distances du réseau. Un compromis est dutiliser la « distance de Manhattan »