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ă.

introduceți descrierea imaginii aici

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”

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *