Aqui está minha tentativa, é apenas um trecho do meu código:
final double RADIUS = 6371.01;
double temp = Math.cos(Math.toRadians(latA))
* Math.cos(Math.toRadians(latB))
* Math.cos(Math.toRadians((latB) - (latA)))
+ Math.sin(Math.toRadians(latA))
* Math.sin(Math.toRadians(latB));
return temp * RADIUS * Math.PI / 180;
Estou usando esta fórmula para obter a latitude e longitude:
x = Deg + (Min + Sec / 60) / 60)
java
math
latitude-longitude
m4design
fonte
fonte
a
ec
? São estes os lados de um triângulo ângulo reto com rótulos tradicionaisa
,b
ec
?Aqui está uma função Java que calcula a distância entre dois pontos de latitude / longitude , postados abaixo, para o caso de desaparecer novamente.
fonte
Nota: esta solução só funciona para distâncias curtas.
Tentei usar a fórmula postada de dommer para um aplicativo e descobri que funcionava bem para longas distâncias, mas em meus dados eu estava usando todas as distâncias muito curtas, e a postagem de dommer se saiu muito mal. Eu precisava de velocidade, e os cálculos geográficos mais complexos funcionavam bem, mas eram muito lentos. Portanto, no caso de você precisar de velocidade e todos os cálculos que está fazendo forem curtos (talvez <100m ou mais). Eu achei essa pequena aproximação para funcionar muito bem. ele assume que o mundo é plano para você, então não o use para longas distâncias, ele funciona aproximando a distância de uma única latitude e longitude na latitude dada e retornando a distância pitagórica em metros.
fonte
Leitores futuros que encontrarem este artigo da SOF.
Obviamente, a pergunta foi feita em 2010 e agora é 2019. Mas surge no início de uma pesquisa na Internet. A pergunta original não descarta o uso de biblioteca de terceiros (quando escrevi esta resposta).
e
https://mvnrepository.com/artifact/org.apache.lucene/lucene-spatial/8.2.0
Por favor, leia a documentação sobre "SloppyMath" antes de mergulhar!
https://lucene.apache.org/core/8_2_0/core/org/apache/lucene/util/SloppyMath.html
fonte
Aqui está uma página com exemplos de javascript para vários cálculos esféricos. O primeiro da página deve fornecer o que você precisa.
http://www.movable-type.co.uk/scripts/latlong.html
Aqui está o código Javascript
Onde 'd' manterá a distância.
fonte
fonte
foram fornecidas muitas respostas excelentes, no entanto, encontrei algumas deficiências de desempenho, então, deixe-me oferecer uma versão com desempenho em mente. Cada constante é pré-calculada e as variáveis x, y são introduzidas para evitar o cálculo do mesmo valor duas vezes. Espero que ajude
fonte
Resposta ligeiramente atualizada de @David George:
A função distance é a mesma, mas eu criei uma pequena função wrapper, que pega 2 objetos Location . Graças a isso, só uso a função de distância se os dois locais realmente tiverem altitude, porque às vezes não. E pode levar a resultados estranhos (se o local não souber sua altitude, 0 será retornado). Nesse caso, volto para a função distanceTo clássica .
fonte
Este artigo da Wikipedia fornece as fórmulas e um exemplo. O texto está em alemão, mas os cálculos falam por si.
fonte