Van-e mód (lehetőleg Excel-ben) két pontlista közötti távolság kiszámításához (lat, lon alapján)?
A végcélom például az lenne, hogy legyen egy Starbucks és egy McDonald listája, majd mutassa meg a legközelebbi szomszédot, ha akarja.
Megjegyzések
- I ' m minimális távolságot keresek.
- Melyik unet segítségével adja vissza a távolságot?
- @Jeed Bármely egység jó lenne, ebben az esetben valószínűleg mérföldek.
Válasz
Megadva a földrajzi koordinátapárok listáját, megvalósíthatja a Haversine képletet közvetlenül az Excel programban.
Ennek (vagy pontosabbnak, de szerintem nem az önnek) képlet legegyszerűbb módja a a VBA Szerkesztő megnyitásához kattintson a Insert --> Module
elemre, majd (másolja és illessze be) pl. a kódot kedvesen javasolta a 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
Új, egyedi getDistance
függvény (egység = kilométer) lesz elérhető a táblázatban, amely négyet elfogad paraméterek, vagyis a két koordinátapár, a következők szerint:
getDistance(latitude1, longitude1, latitude2, longitude2)
ahol a latitude1, longitude1, latitude2, longitude2
elemeket helyettesíteni kell relatívjukkal cellahivatkozások.
megjegyzések
- közvetlen link: codecodex.com/wiki/…
- @ blah238 Köszönjük javaslatát. <
hozzáadtam egy rövid útmutatót annak érdekében, hogy működőképes legyen.
Válasz
Pontosabb módszer a Vicenty “s képlet használata. Ez egy ellipszoidon alapszik a gömböt. Azonban az előző válasz elvégzi a munkát, ha városban dolgozik (a különbségek esetenként elhanyagolhatók). Itt találtam egy excel vb kódot itt minden esetre.
Ne feledje, hogy ha városban dolgozik, akkor a “madárrepülés” távolságok megtévesztése lehet félrevezető. Jobb lenne hálózati távolságokat használni. Kompromisszum a “manhattani távolság”
használata