¿Cómo calculo la distancia entre dos coordenadas GPS (usando latitud y longitud)?
math
geolocation
geometry
latitude-longitude
geography
nicudotro
fuente
fuente
Respuestas:
Calcule la distancia entre dos coordenadas por latitud y longitud , incluida una implementación de Javascript.
Las ubicaciones oeste y sur son negativas. Recuerde que los minutos y segundos están fuera de 60, entonces S31 30 'es -31.50 grados.
No olvides convertir grados a radianes . Muchos idiomas tienen esta función. O su cálculo simple:
radians = degrees * PI / 180
.Aquí hay algunos ejemplos de uso:
fuente
Number.prototype.toRad = function() { return this * (Math.PI / 180); };
. O, como se indica a continuación, puede reemplazar(Math.PI/2)
con 0.0174532925199433 (... cualquier precisión que considere necesaria) para un mayor rendimiento.R
normalmente significa en matemáticas, luego busca cantidades relevantes relacionadas con la Tierra para ver si los números coinciden.earthRadiusKm
para servar earthRadiusMiles = 3959;
, para tu información.Busque haversine con Google; Aquí está mi solución:
fuente
Versión C # de Haversine
Aquí hay un violín de .NET de esto , para que pueda probarlo con sus propios Lat / Longs.
fuente
Versión Java del algoritmo de Haversine basado en la respuesta de Roman Makarov a este hilo
fuente
0.07149
km, mientras que su fórmula me dio0.07156
una precisión de aproximadamente 99%Esto es muy fácil de hacer con el tipo de geografía en SQL Server 2008.
4326 es SRID para el modelo de tierra elipsoidal WGS84
fuente
Aquí hay una función de Haversine en Python que uso:
fuente
Depende de cuán preciso necesite que sea, si necesita una precisión precisa, es mejor mirar un algoritmo con un elipsoide, en lugar de una esfera, como el algoritmo de Vincenty, que es exacto al mm. http://en.wikipedia.org/wiki/Vincenty%27s_algorithm
fuente
Aquí está en C # (lat y long en radianes):
Si su lat y long están en grados, divida por 180 / PI para convertir a radianes.
fuente
Necesitaba calcular muchas distancias entre los puntos para mi proyecto, así que seguí adelante e intenté optimizar el código que encontré aquí. En promedio, en diferentes navegadores, mi nueva implementación se ejecuta 2 veces más rápido que la respuesta más votada.
Puedes jugar con mi jsPerf y ver los resultados aquí. .
Recientemente necesitaba hacer lo mismo en Python, así que aquí hay una implementación de Python :
Y en aras de la integridad: Haversine en wiki.
fuente
Versión PHP:
(Elimine todo
deg2rad()
si sus coordenadas ya están en radianes).fuente
Una función T-SQL, que uso para seleccionar registros por distancia para un centro
fuente
Si necesita algo más preciso, eche un vistazo a esto .
fuente
I. Sobre el método de "migas de pan"
A continuación, vea la función en C que tiene en cuenta el n. ° 1 y n. ° 2:
II Hay una manera más fácil que da muy buenos resultados.
Por velocidad media.
Trip_distance = Trip_average_speed * Trip_time
Dado que la velocidad del GPS es detectada por el efecto Doppler y no está directamente relacionada con [Lon, Lat], al menos se puede considerar como secundaria (respaldo o corrección) si no como método de cálculo de distancia principal.
fuente
Si está utilizando .NET, no reviva la rueda. Ver System.Device.Location . Crédito a fnx en los comentarios en otra respuesta .
fuente
Este código Lua está adaptado de lo que se encuentra en Wikipedia y en la herramienta GPSbabel de Robert Lipe :
fuente
fuente
Esta es la versión de "Henry Vilinskiy" adaptada para MySQL y Kilómetros:
fuente
MySQL
dichoSomething is wrong in your syntax near '' on line 8
// declare distance float;
aquí está la implementación Swift de la respuesta
fuente
tomé la respuesta principal y la usé en un programa Scala
Curri la función para poder producir fácilmente funciones que tengan una de las dos ubicaciones fijas y requieran solo un par de lat / lon para producir la distancia.
fuente
Supongo que lo quieres a lo largo de la curvatura de la tierra. Tus dos puntos y el centro de la tierra están en un plano. El centro de la tierra es el centro de un círculo en ese plano y los dos puntos están (aproximadamente) en el perímetro de ese círculo. A partir de eso, puede calcular la distancia descubriendo cuál es el ángulo de un punto a otro.
Si los puntos no son de la misma altura, o si necesita tener en cuenta que la tierra no es una esfera perfecta, se vuelve un poco más difícil.
fuente
Recientemente tuve que hacer lo mismo. Encontré que este sitio web es muy útil al explicar trigonometría esférica con ejemplos que fueron fáciles de seguir.
fuente
puede encontrar una implementación de esto (con una buena explicación) en F # en fssnip
Aquí están las partes importantes:
fuente
Necesitaba implementar esto en PowerShell, espero que pueda ayudar a alguien más. Algunas notas sobre este método
Estoy usando Haversine, ya que otras publicaciones han señalado que las fórmulas de Vincenty son mucho más precisas
fuente
Versión Scala
fuente
// ¿Quizás un error tipográfico?
Tenemos un dlon variable no utilizado en GetDirection,
supongo
debiera ser
fuente
Aquí está mi implementación en Elixir
fuente
Dart Version
Algoritmo de Haversine.
fuente
Creo que todavía falta una versión del algoritmo en R :
fuente
Aquí hay una variación de Kotlin:
fuente