Există o modalitate (de preferință în Excel) de a calcula distanța (pe baza lat, lon) între două liste de puncte?
Scopul meu final ar fi, de exemplu, să am o listă cu Starbucks și o listă cu McDonald și apoi să arăt cel mai apropiat vecin, dacă vreți.
Comentarii
- Eu ' sunt în căutarea distanței minime.
- Prin ce unet, va returna distanța?
- @Jeed Orice unitate ar fi în regulă, probabil mile în acest caz.
Răspuns
Dat fiind o listă de perechi de coordonate geografice, puteți implementa Formula Haversine direct în Excel.
Cel mai simplu mod de a utiliza această formulă (sau o metodă mai precisă, dar cred că nu este cazul dvs.) constă în apăsarea Alt+F11
pentru a deschide Editorul VBA, faceți clic pe Insert --> Module
și apoi (copiați și lipiți de ex. codul sugerat de 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
Va exista o nouă funcție getDistance
personalizată (unit = kilometru) disponibilă în foaia de calcul care acceptă patru parametri, adică cele două perechi de coordonate, după cum urmează:
getDistance(latitude1, longitude1, latitude2, longitude2)
unde latitude1, longitude1, latitude2, longitude2
ar trebui înlocuite cu relative referințe de celulă.
Comentarii
- Direct link: codecodex.com/wiki/…
- @ blah238 Vă mulțumim pentru sugestie. Am ' am adăugat o scurtă instrucțiune pentru a face să funcționeze.
- @afalciano Vă mulțumim pentru plimbarea prin & cod. Întrebarea mea este însă care sunt unitățile finale din această ecuație? este de metri?
- @Kerry Este ' kilometri. De asemenea, acolo unde formula spune " Sqr " ar trebui să fie " Sqrt ".
- Unitatea de măsură a distanțelor este de kilometri, la fel ca raza Pământului.
Răspuns
O modalitate mai precisă este de a folosi formula Vicenty „s . Se bazează pe un elipsoid în loc de un Cu toate acestea, răspunsul anterior va face treaba dacă lucrați într-un oraș (diferențele pot fi neglijate în cazul dvs.). Am „găsit un cod excel vb aici pentru orice eventualitate.
Rețineți că, dacă lucrați într-un oraș, utilizarea distanțelor „zbor de pasăre” ar putea fi înșelătoare. Ar fi mai bine să folosiți distanțele de rețea. Un compromis este să folosiți „distanța Manhattan”