language-agnostic - para - formula de haversine excel
¿La Fórmula de Haversine o la Fórmula de Vincenty son mejores para calcular la distancia? (2)
¿Cuál es mejor para calcular la distancia entre dos puntos de latitud / longitud, la fórmula Haversine o la fórmula de Vincenty? ¿Por qué?
La distancia obviamente se calcula en la Tierra. ¿Las coordenadas WGS84 vs GCJ02 afectan el cálculo o la distancia (la fórmula de Vincenty tiene en cuenta el eje WGS84)?
Por ejemplo, en Android, la Fórmula Haversine se utiliza en Google Map Utils , pero la fórmula Vincenty es utilizada por el objeto android.Location
( Location.distanceBetween()
).
Haversine es un cálculo más simple, pero no proporciona la alta precisión que ofrece Vincenty.
Vincenty es más preciso pero también es más intensivo en términos de computación y, por lo tanto, tendrá un rendimiento más lento y aumentará el uso de la batería.
Como con cualquier cosa "mejor" es una cuestión de su aplicación particular. Para su aplicación, Vincenty puede ser una "mejor" opción que Haversine, pero para una aplicación diferente, Haversine puede ser una mejor opción. Deberá observar los detalles de sus casos de uso y tomar una determinación basada en lo que encuentre allí.
Haversine y Vincenty son dos algoritmos para resolver diferentes problemas. Haversine calcula la distancia del gran círculo en una esfera mientras que Vincenty calcula la distancia más corta (geodésica) en la superficie de un elipsoide de revolución. Entonces, la respuesta a su pregunta se puede dividir en 2 partes:
- ¿Quieres calcular la distancia en una esfera en un elipsoide?
- ¿Qué tan preciso es Haversine o Vincenty para calcular el problema dado?
Para aplicaciones terrestres, un elipsoide de revolución es una aproximación razonable al "nivel medio del mar"; el error es de ± 100 m. El aplanamiento de este elipsoide es pequeño, alrededor de 1/300, por lo que puede aproximarse mediante una esfera (de igual volumen, por ejemplo).
Las distancias de gran círculo difieren de las distancias geodésicas hasta en un 0,5%. En algunas aplicaciones, por ejemplo, ¿cuál es la distancia desde el Cabo a El Cairo ?, este error puede ser ignorado. En otras aplicaciones, por ejemplo, determinar los límites marítimos, es demasiado grande (está a 5 m sobre una distancia de 1 km). En general, estás más seguro usando la distancia geodésica.
Si le interesa la distancia recorrida (en automóvil, bote o avión), hay muchas restricciones en el camino tomado y ni el gran círculo ni la distancia geodésica, que miden la longitud de los caminos más cortos en una superficie ideal, serían apropiado.
Sobre la cuestión de si los algoritmos son precisos:
Haversine es preciso redondear a menos que los puntos sean casi antipodales. Se dan mejores fórmulas en el artículo de Wikipedia sobre distancias de círculo máximo .
Vincenty suele tener una precisión de aproximadamente 0,1 mm. Sin embargo, si los puntos son casi antipodales, el algoritmo no logra converger y el error es mucho mayor. Doy un mejor algoritmo para resolver el problema geodésico en Algoritmos para geodésicas . Ver también el artículo de Wikipedia sobre geodésicas en un elipsoide .
Resolver el problema geodésico es más lento que resolver para el gran círculo. Pero sigue siendo muy rápido (alrededor de 1 μs por cálculo), por lo que esta no debería ser una razón para preferir las distancias de gran círculo.
ADENDUM
Aquí está el paquete de Java que implementa mi algoritmo para encontrar distancias geodésicas. A diferencia del método de Vincenty, es preciso redondear y converge en todas partes.