Como faço para calcular a distância entre duas coordenadas GPS (usando latitude e longitude)?
math
geolocation
geometry
latitude-longitude
geography
nicudotro
fonte
fonte
Respostas:
Calcule a distância entre duas coordenadas por latitude e longitude , incluindo uma implementação Javascript.
Os locais oeste e sul são negativos. Lembre-se de minutos e segundos fora de 60, então S31 30 'é -31,50 graus.
Não se esqueça de converter graus em radianos . Muitos idiomas têm essa função. Ou é um cálculo simples:
radians = degrees * PI / 180
.Aqui estão alguns exemplos de uso:
fonte
Number.prototype.toRad = function() { return this * (Math.PI / 180); };
. Ou, como indicado abaixo, você pode substituir(Math.PI/2)
por 0,0174532925199433 (... qualquer precisão que considerar necessária) para aumentar o desempenho.R
normalmente significa em matemática e procure quantidades relevantes relacionadas à Terra para ver se os números correspondem.earthRadiusKm
a servar earthRadiusMiles = 3959;
, fyi.Procure por estrias no Google; aqui está a minha solução:
fonte
Versão C # do Haversine
Aqui está um .NET Fiddle disso , para que você possa testá-lo com seu próprio Lat / Longs.
fonte
Versão Java do Algoritmo Haversine baseado na resposta de Roman Makarov a esta discussão
fonte
0.07149
km ao passo que a sua fórmula deu-me0.07156
que é uma precisão de cerca de 99%Isso é muito fácil de fazer com o tipo de região geográfica no SQL Server 2008.
4326 é SRID para o modelo Terra elipsoidal WGS84
fonte
Aqui está uma função Haversine em Python que eu uso:
fonte
Depende da precisão que você precisa, se precisar de precisão, é melhor analisar um algoritmo usando um elipsóide, em vez de uma esfera, como o algoritmo de Vincenty, que é preciso em mm. http://en.wikipedia.org/wiki/Vincenty%27s_algorithm
fonte
Aqui está em C # (lat e long em radianos):
Se seu lat e long estão em graus, divida por 180 / PI para converter em radianos.
fonte
Eu precisava calcular muitas distâncias entre os pontos do meu projeto, então fui em frente e tentei otimizar o código, que encontrei aqui. Em média, em diferentes navegadores, minha nova implementação é executada duas vezes mais rápido que a resposta mais votada.
Você pode brincar com meu jsPerf e ver os resultados aqui .
Recentemente, eu precisei fazer o mesmo em python, então aqui está uma implementação em python :
E por uma questão de completude: Haversine no wiki.
fonte
Versão do PHP:
(Remova tudo
deg2rad()
se suas coordenadas já estiverem em radianos.)fonte
Uma função T-SQL, que eu uso para selecionar registros por distância para um centro
fonte
Se você precisar de algo mais preciso, dê uma olhada nisso .
fonte
I. Quanto ao método "Breadcrumbs"
Veja abaixo a função em C, que leva em consideração os números 1 e 2:
II Existe uma maneira mais fácil que fornece bons resultados.
Pela velocidade média.
Distância de viagem = Velocidade_ média da viagem * Tempo de viagem
Como a velocidade do GPS é detectada pelo efeito Doppler e não está diretamente relacionada a [Lon, Lat], ela pode pelo menos ser considerada secundária (backup ou correção), se não como o método de cálculo da distância principal.
fonte
Se você estiver usando o .NET, não reivente a roda. Consulte System.Device.Location . Crédito para fnx nos comentários em outra resposta .
fonte
Este código Lua é adaptado de material encontrado na Wikipedia e na ferramenta GPSbabel de Robert Lipe :
fonte
fonte
Esta é a versão de "Henry Vilinskiy" adaptada para MySQL e Quilômetros:
fonte
MySQL
disseSomething is wrong in your syntax near '' on line 8
// declare distance float;
aqui está a implementação Swift da resposta
fonte
peguei a resposta principal e usei-a em um programa Scala
usei a função para poder produzir facilmente funções que têm um dos dois locais fixos e requerem apenas um par de lat / lon para produzir distância.
fonte
Eu acho que você quer ao longo da curvatura da terra. Seus dois pontos e o centro da terra estão em um avião. O centro da terra é o centro de um círculo nesse plano e os dois pontos estão (aproximadamente) no perímetro desse círculo. A partir disso, você pode calcular a distância, descobrindo qual é o ângulo de um ponto para o outro.
Se os pontos não tiverem as mesmas alturas, ou se você precisar levar em consideração que a Terra não é uma esfera perfeita, fica um pouco mais difícil.
fonte
Recentemente, tive que fazer a mesma coisa. Achei este site muito útil para explicar trigonométricas esféricas com exemplos fáceis de seguir.
fonte
você pode encontrar uma implementação disso (com algumas boas explicações) em F # no fssnip
aqui estão as partes importantes:
fonte
Eu precisava implementar isso no PowerShell, espero que possa ajudar outra pessoa. Algumas notas sobre este método
Estou usando o Haversine, pois outras postagens apontaram que as fórmulas do Vincenty são muito mais precisas
fonte
Versão Scala
fonte
// Talvez um erro de digitação?
Temos uma variável não utilizada dlon em GetDirection,
suponho
deveria estar
fonte
Aqui está minha implementação no Elixir
fonte
Versão dardo
Algoritmo Haversine.
fonte
Eu acho que uma versão do algoritmo em R ainda está faltando:
fonte
Aqui está uma variação do Kotlin:
fonte