Finnes det en måte (helst i Excel) å beregne avstanden (basert på lat, lon) mellom to punktlister?

Mitt endelige mål er for eksempel å ha en liste over Starbucks og en liste over McDonalds, og deretter vise nærmeste nabo, hvis du vil.

Kommentarer

  • Jeg ' m på jakt etter minimumsavstand.
  • Ved hvilken unet, vil returnere distansen?
  • @Jeed Enhver enhet vil være bra, sannsynligvis miles i dette tilfellet.

Svar

Gitt en liste over geografiske koordinatpar, kan du implementere Haversine-formel direkte i Excel.


Den enkleste måten å bruke denne (eller en mer nøyaktig, men jeg tror det ikke er ditt tilfelle) formel består i å trykke Alt+F11 for å åpne VBA Editor, klikk Insert --> Module og deretter (kopier og) lim inn f.eks. -koden vennlig foreslått av 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 

Det vil være en ny tilpasset getDistance -funksjon (enhet = kilometer) tilgjengelig i regnearket som godtar fire parametrene, dvs. de to parene med koordinater, som følger:

getDistance(latitude1, longitude1, latitude2, longitude2) 

der latitude1, longitude1, latitude2, longitude2 skal erstattes av deres relative cellehenvisninger.

skriv inn bildebeskrivelse her

Kommentarer

  • Direkte lenke: codecodex.com/wiki/…
  • @ blah238 Takk for ditt forslag. Jeg ' har lagt til en kort veiledning for å få den til å fungere.
  • @afalciano Takk for turen gjennom & kode. Spørsmålet mitt er imidlertid hva som er de ultimate enhetene fra denne ligningen? er det målere?
  • @Kerry Det ' s kilometer. Også der formelen sier " Sqr " skal den være " Sqrt ".
  • Måleenheten for avstander er kilometer, akkurat som jordens radius.

Svar

En mer nøyaktig måte er å bruke formelen Vicenty. Den er basert på en ellipsoid i stedet for en sfære. Det forrige svaret vil imidlertid gjøre jobben hvis du jobber i en by (forskjeller kan neglisjeres i ditt tilfelle). Jeg har funnet en excel vb-kode her bare i tilfelle.

Vær oppmerksom på at hvis du jobber i en by, kan det være misvisende å bruke avstander med «fugleflukt». Det ville være bedre å bruke nettverksavstander. Et kompromiss er å bruke «Manhattan distance»

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *