Aquí está mi intento, es solo un fragmento de mi 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;
Estoy usando estas fórmulas para obtener la latitud y la longitud:
x = Deg + (Min + Sec / 60) / 60)
java
math
latitude-longitude
m4design
fuente
fuente
a
yc
? Son estos los lados de un triángulo rectángulo con las etiquetas tradicionalesa
,b
yc
?Aquí hay una función de Java que calcula la distancia entre dos puntos lat / long , publicada a continuación, en caso de que vuelva a desaparecer.
fuente
Nota: esta solución solo funciona para distancias cortas.
Traté de usar la fórmula publicada de dommer para una aplicación y descubrí que funcionaba bien para largas distancias, pero en mis datos estaba usando todas las distancias muy cortas y la publicación de dommer lo hizo muy mal. Necesitaba velocidad y los cálculos geográficos más complejos funcionaban bien, pero eran demasiado lentos. Entonces, en el caso de que necesite velocidad y todos los cálculos que está haciendo son cortos (tal vez <100 m aproximadamente). Encontré que esta pequeña aproximación funciona muy bien. asume que el mundo es plano, así que no lo use para largas distancias, funciona aproximando la distancia de una sola latitud y longitud en la latitud dada y devolviendo la distancia pitagórica en metros.
fuente
Futuros lectores que se topan con este artículo de SOF.
Obviamente, la pregunta se hizo en 2010 y ahora es 2019. Pero surge al principio de una búsqueda en Internet. La pregunta original no descarta el uso de una biblioteca de terceros (cuando escribí esta respuesta).
y
https://mvnrepository.com/artifact/org.apache.lucene/lucene-spatial/8.2.0
¡Lea la documentación sobre "SloppyMath" antes de sumergirse!
https://lucene.apache.org/core/8_2_0/core/org/apache/lucene/util/SloppyMath.html
fuente
Aquí hay una página con ejemplos de JavaScript para varios cálculos esféricos. El primero de la página debería darte lo que necesitas.
http://www.movable-type.co.uk/scripts/latlong.html
Aquí está el código Javascript
Donde 'd' mantendrá la distancia.
fuente
fuente
Se proporcionaron muchas respuestas excelentes, sin embargo, encontré algunas deficiencias de rendimiento, así que permítanme ofrecer una versión con el rendimiento en mente. Cada constante está precalculada y se introducen variables x, y para evitar calcular el mismo valor dos veces. Espero eso ayude
fuente
Respuesta ligeramente mejorada de @David George:
La función de distancia es la misma, pero he creado una función de envoltura pequeña, que toma 2 objetos de ubicación . Gracias a esto, solo uso la función de distancia si ambas ubicaciones tienen altitud, porque a veces no la tienen. Y puede conducir a resultados extraños (si la ubicación no conoce su altitud 0, se devolverá). En este caso, recurro a la función de distancia clásica .
fuente
Este artículo de wikipedia proporciona las fórmulas y un ejemplo. El texto está en alemán, pero los cálculos hablan por sí mismos.
fuente