Czy istnieje sposób (najlepiej w programie Excel) na obliczenie odległości (na podstawie lat, lon) między dwiema listami punktów?
Moim końcowym celem byłoby na przykład sporządzenie listy kawiarni Starbucks i McDonalda, a następnie pokazanie najbliższego sąsiada, jeśli chcesz.
Komentarze
- I ' m szukam minimalnej odległości.
- Po której wartości zwróci odległość?
- @Jeed Dowolna jednostka, w tym przypadku prawdopodobnie mile.
Odpowiedź
Mając listę par współrzędnych geograficznych, możesz zaimplementować formułę Haversinea bezpośrednio w programie Excel.
Najprostszym sposobem użycia tej (lub dokładniejszej, ale myślę, że nie jest to twój przypadek) formuły jest naciśnięcie Alt+F11
aby otworzyć edytor VBA, kliknij Insert --> Module
, a następnie (skopiuj i) wklej np. kod uprzejmie zasugerowany przez 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
W Twoim arkuszu kalkulacyjnym będzie dostępna nowa niestandardowa funkcja getDistance
(jednostka = kilometr), która akceptuje cztery parametry, tj. dwie pary współrzędnych, jak poniżej:
getDistance(latitude1, longitude1, latitude2, longitude2)
gdzie latitude1, longitude1, latitude2, longitude2
należy zastąpić ich względnymi odwołania do komórek.
Komentarze
- Bezpośrednio link: codecodex.com/wiki/…
- @ blah238 Dziękujemy za sugestię. ' dodałem krótkie instrukcje, aby to działało.
- @afalciano Dzięki za spacer po & kod. Moje pytanie brzmi jednak, jakie są ostateczne jednostki z tego równania? czy to metry?
- @Kerry It ' s kilometrów. Ponadto tam, gdzie formuła mówi " Sqr ", powinno to być " Sqrt ".
- Jednostką miary odległości są kilometry, podobnie jak promień Ziemi.
Odpowiedź
Bardziej dokładnym sposobem jest użycie wzoru Vicenty „. Opiera się on na elipsoidzie zamiast na sfera. Jednak poprzednia odpowiedź zadziała, jeśli pracujesz w mieście (różnice w twoim przypadku mogą być pominięte). Znalazłem kod Excel VB tutaj na wszelki wypadek.
Pamiętaj, że jeśli pracujesz w mieście, używanie odległości „lotu ptaka” może być mylące. Lepiej byłoby użyć odległości w sieci. Kompromisem jest użycie „odległości Manhattanu”