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 de Starbucks e uma lista de McDonald “s e, em seguida, mostrar o vizinho mais próximo, se você quiser.
Comentários
- Eu ' estou procurando a distância mínima.
- Por qual unet, retornará a distância?
- @Jeed Qualquer unidade seria adequada, provavelmente milhas neste caso.
Resposta
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 esta fórmula (ou mais precisa, mas acho que “não é o seu caso) consiste em pressionar Alt+F11
para abrir o Editor VBA, clique em Insert --> Module
e depois (copie e) cole, 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 getDistance
função personalizada (unidade = quilômetro) disponível em sua planilha que aceita quatro parâmetros, ou seja, os dois pares de coordenadas, conforme a seguir:
getDistance(latitude1, longitude1, latitude2, longitude2)
onde latitude1, longitude1, latitude2, longitude2
deve ser substituído por seu parente referências de células.
Comentários
- Direto link: codecodex.com/wiki/…
- @ blah238 Obrigado pela sua sugestão. Eu ' adicionei um breve “como fazer” para fazê-lo funcionar.
- @afalciano Obrigado pelo passeio por & código. Minha pergunta, porém, é quais são as unidades finais dessa equação? são metros?
- @Kerry It ' s quilômetros. Além disso, onde a fórmula diz " Sqr ", deve ser " Sqrt ".
- A unidade de medida das distâncias é quilômetros, assim como o raio da Terra.
Resposta
Uma maneira mais precisa é usar a fórmula Vicenty “s . É baseada em um elipsóide em vez de um 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 excel vb aqui apenas no caso.
Observe que se você trabalha em uma cidade, usar distâncias de “voo de pássaros” pode ser enganoso. Seria melhor usar distâncias de rede. Um meio-termo é usar “distância de Manhattan”