Onko mahdollista (mieluiten Excelissä) laskea etäisyys (pisteiden, lonien perusteella) kahden pistelistan välillä?
Päätavoitteeni olisi esimerkiksi saada luettelo Starbucksista ja luettelo McDonaldista ja näyttää sitten lähin naapuri, jos haluat.
Kommentit
- Etsin ' m etsimällä vähimmäisetäisyyttä.
- Millä tavalla unet palauttaa etäisyyden?
- @Jeed Mikä tahansa yksikkö olisi hieno, todennäköisesti tässä tapauksessa mailia.
Vastaa
Annettuasi luettelon maantieteellisistä koordinaattipareista, voit toteuttaa Haversinen kaava suoraan Excelissä.
Yksinkertaisin tapa käyttää tätä (tai tarkempaa, mutta mielestäni se ei ole sinun tapaustasi) kaava koostuu painamalla Alt+F11
avataksesi VBA-editorin, napsauta Insert --> Module
ja sitten (kopioi ja) liitä esim. blah238: n ystävällisesti ehdottama -koodi .
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
Laskentataulukossasi on uusi mukautettu getDistance
-toiminto (yksikkö = kilometri), joka hyväksyy neljä parametrit, ts. kaksi koordinaattiparia, ovat seuraavat:
getDistance(latitude1, longitude1, latitude2, longitude2)
missä latitude1, longitude1, latitude2, longitude2
tulisi korvata niiden suhteellisella soluviitteet.
kommentit
- suora linkki: codecodex.com/wiki/…
- @ blah238 Kiitos ehdotuksestasi. Olen ' lisännyt lyhyen ohjeen saadaksesi sen toimimaan.
- @afalciano Kiitos kulkemisesta & koodi. Kysymykseni on kuitenkin, mitkä ovat tämän yhtälön lopulliset yksiköt? onko se metriä?
- @Kerry It ' s kilometriä. Jos kaavassa lukee " Sqr ", sen on oltava " Sqrt ".
- Etäisyyksien mittayksikkö on kilometrejä, aivan kuten maapallon säde.
Vastaa
Tarkempi tapa on käyttää Vicenty ”s -kaavaa. Se perustuu ellipsoidiin a pallo. Edellinen vastaus kuitenkin toimii, jos työskentelet kaupungissa (eroavaisuudet voidaan jättää huomioimatta). Löysin Excel-koodin täältä vain siinä tapauksessa.
Huomaa, että jos työskentelet kaupungissa, lintulentojen käyttäminen voi olla harhaanjohtavaa. Olisi parempi käyttää verkon etäisyyksiä. Kompromissina on käyttää Manhattanin etäisyyttä