Realizando o cálculo da distância usando o Excel?


8

Existe uma maneira (de preferência no Excel) de calcular a distância (com base em lat, lon) entre duas listas de pontos?

Meu objetivo final seria, por exemplo, ter uma lista da Starbucks e uma lista do McDonald's e, em seguida, mostrar o vizinho mais próximo.


Estou procurando a distância mínima.
b-rad-b

Por qual unet, retornará a distância?
Jeed

@Jeed Qualquer unidade ficaria bem, provavelmente milhas neste caso.
b-rad-b

Respostas:


16

Dada uma lista de pares de coordenadas geográficas, você pode implementar a fórmula Haversine diretamente no Excel.


A maneira mais simples de usar essa fórmula (ou uma mais precisa, mas acho que não é o seu caso) consiste em pressionar Alt+F11para abrir o Editor do VBA, clicar Insert --> Modulee depois (copiar e) colar, por exemplo, o código gentilmente sugerido por 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

Haverá uma nova getDistancefunção personalizada (unidade = quilômetro) disponível em sua planilha que aceita quatro parâmetros, ou seja, os dois pares de coordenadas, como segue:

getDistance(latitude1, longitude1, latitude2, longitude2)

onde latitude1, longitude1, latitude2, longitude2deve ser substituído por suas referências de célula relativas.

insira a descrição da imagem aqui



@ blah238 Obrigado pela sua sugestão. Adicionei um breve tutorial para fazê-lo funcionar.
Antonio Falciano

1
@afalciano Obrigado pela explicação e pelo código. Minha pergunta, porém, é quais são as unidades finais dessa equação? são metros?
Kerry

@Kerry São quilômetros. Além disso, onde a fórmula diz "Sqr", ela deve ser "Sqrt".
precisa saber é o seguinte

A unidade de medida das distâncias é de quilômetros, assim como o raio da Terra.
Antonio Falciano 26/01

3

Uma maneira mais precisa é usar a fórmula de Vicenty . É baseado em um elipsóide em vez de uma esfera. No entanto, a resposta anterior fará o trabalho se você trabalhar em uma cidade (as diferenças podem ser negligenciadas no seu caso). Eu encontrei um código vb do excel aqui por precaução.

Observe que se você trabalha em uma cidade, o uso de distâncias de "fuga de pássaros" pode ser enganoso. Seria melhor usar distâncias da rede. Um compromisso é usar a "distância de Manhattan"

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.