Is er een manier (bij voorkeur in Excel) om de afstand (gebaseerd op lat, lon) tussen twee lijsten met punten te berekenen?

Mijn einddoel zou bijvoorbeeld zijn om een lijst met Starbucks en een lijst met McDonalds te hebben, en dan de dichtstbijzijnde buur te tonen, als je wilt.

Opmerkingen

  • Ik ' m zoek naar minimale afstand.
  • Met welke unet, zal de afstand teruggeven?
  • @Jeed Elke eenheid zou in orde zijn, waarschijnlijk mijlen in dit geval.

Antwoord

Gegeven een lijst met geografische coördinatenparen, kunt u de Haversine-formule rechtstreeks in Excel.


De eenvoudigste manier om deze (of nauwkeuriger, maar ik denk dat het niet jouw geval is) formule te gebruiken, is pers Alt+F11 om de VBA Editor te openen, klik Insert --> Module en vervolgens (kopieer en) plak bv de code vriendelijk voorgesteld door 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 

Er komt een nieuwe aangepaste getDistance functie (eenheid = kilometer) beschikbaar in uw spreadsheet die vier parameters, dwz de twee coördinatenparen, als volgt:

getDistance(latitude1, longitude1, latitude2, longitude2) 

waarbij latitude1, longitude1, latitude2, longitude2 moet worden vervangen door hun relatieve celverwijzingen.

voer hier een afbeeldingsbeschrijving in

Opmerkingen

  • Direct link: codecodex.com/wiki/…
  • @ blah238 Bedankt voor je suggestie. Ik ' heb een korte instructie toegevoegd om het te laten werken.
  • @afalciano Bedankt voor de wandeling door & code. Mijn vraag is echter: wat zijn de uiteindelijke eenheden van deze vergelijking? zijn het meters?
  • @Kerry Het ' s kilometers. Waar de formule " Sqr " zegt, moet deze ook " Sqrt ".
  • De maateenheid voor afstanden is kilometers, net als de straal van de aarde.

Antwoord

Een nauwkeurigere manier is om de formule van Vicenty “s te gebruiken. Deze is gebaseerd op een ellipsoïde in plaats van een bol. Het vorige antwoord is echter voldoende als je in een stad werkt (verschillen kunnen in jouw geval worden verwaarloosd). Ik “heb een Excel vb-code gevonden hier voor het geval dat.

Merk op dat als u in een stad werkt, het gebruik van “vogelvlucht” -afstanden misleidend kan zijn. Het is beter om netwerkafstanden te gebruiken. Een compromis is het gebruik van “Manhattan-afstand”

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *