Finns det ett sätt (helst i Excel) att beräkna avståndet (baserat på lat, lon) mellan två poänglistor?

Mitt slutmål skulle till exempel vara att ha en lista över Starbucks och en lista över McDonalds och sedan visa närmaste granne, om du vill.

Kommentarer

  • Jag ' m letar efter minsta avstånd.
  • Genom vilken unet, kommer avståndet att returneras?
  • @Jeed Alla enheter skulle vara bra, förmodligen mil i det här fallet.

Svar

Med en lista över geografiska koordinatpar kan du implementera Haversinformel direkt i Excel.


Det enklaste sättet att använda denna (eller en mer exakt, men jag tror att det inte är ditt fall) består av att trycka på Alt+F11 för att öppna VBA Editor, klicka på Insert --> Module och klistra sedan in (kopiera och) -koden vänligen föreslagen 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 kommer att finnas en ny anpassad getDistance -funktion (enhet = kilometer) tillgänglig i ditt kalkylark som accepterar fyra parametrar, dvs de två koordinatparen, enligt följande:

getDistance(latitude1, longitude1, latitude2, longitude2) 

där latitude1, longitude1, latitude2, longitude2 bör ersättas med deras relativa cellreferenser.

ange bildbeskrivning här

Kommentarer

  • Direkt länk: codecodex.com/wiki/…
  • @ blah238 Tack för ditt förslag. Jag ' har lagt till en kort guide för att få det att fungera.
  • @afalciano Tack för promenaden genom & kod. Min fråga är dock vilka är de ultimata enheterna från denna ekvation? är det mätare?
  • @Kerry Det ' s kilometer. Där formeln säger " Sqr " ska det vara " Sqrt ".
  • Måttenheten för avstånd är kilometer, precis som jordens radie.

Svar

Ett mer exakt sätt är att använda formeln Vicenty. Den är baserad på en ellipsoid istället för en sfär. Det tidigare svaret kommer dock att göra jobbet om du arbetar i en stad (skillnader kan försummas i ditt fall). Jag har hittat en excel vb-kod här bara i fall.

Observera att om du arbetar i en stad kan det vara vilseledande att använda ”fågelflyg”. Det vore bättre att använda nätverksavstånd. En kompromiss är att använda ”Manhattan distans”

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *