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