Esiste un modo (preferibilmente in Excel) per calcolare la distanza (basata su lat, lon) tra due elenchi di punti?
Il mio obiettivo finale sarebbe, ad esempio, avere un elenco di Starbucks e un elenco di McDonald “e quindi mostrare il vicino più vicino, se vuoi.
Commenti
- I ' sto cercando la distanza minima.
- Di quale unet restituirà la distanza?
- @Jeed Qualsiasi unità andrebbe bene, probabilmente miglia in questo caso.
Risposta
Dato un elenco di coppie di coordinate geografiche, puoi implementare la formula di Haversine direttamente in Excel.
Il modo più semplice per utilizzare questa formula (o una più accurata, ma credo che non sia il tuo caso) consiste nel premere Alt+F11
per aprire leditor VBA, fai clic su Insert --> Module
e quindi (copia e) incolla ad es. il codice gentilmente suggerito da 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
Sarà disponibile una nuova funzione getDistance
personalizzata (unit = chilometro) disponibile nel foglio di lavoro che accetta quattro parametri, cioè le due coppie di coordinate, come segue:
getDistance(latitude1, longitude1, latitude2, longitude2)
dove latitude1, longitude1, latitude2, longitude2
dovrebbe essere sostituito dal relativo riferimenti di cella.
Commenti
- Diretto link: codecodex.com/wiki/…
- @ blah238 Grazie per il tuo suggerimento. Ho ' ho aggiunto una breve guida per farlo funzionare.
- @afalciano Grazie per la guida & codice. La mia domanda però è: quali sono le unità finali di questa equazione? sono metri?
- @Kerry It ' s chilometri. Inoltre, dove la formula dice " Sqr " dovrebbe essere " Sqrt ".
- Lunità di misura delle distanze è i chilometri, proprio come il raggio terrestre.
Risposta
Un modo più accurato è utilizzare la formula Vicenty “s . È basata su un ellissoide invece di un sfera. Tuttavia, la risposta precedente funzionerà se lavori in una città (le differenze possono essere trascurate nel tuo caso). Ho trovato un codice excel vb qui per ogni evenienza.
Tieni presente che se lavori in una città, utilizzare le distanze di “volo degli uccelli” potrebbe essere fuorviante. Sarebbe meglio utilizzare le distanze di rete. Un compromesso consiste nellusare la “distanza di Manhattan”