Esta pregunta parece algo fácil de responder. Uno podría ir a google maps, openstreetmaps, marble o alguna herramienta similar y sacarlo de toque ¿Pero alguna vez te preguntaste cómo se calcula eso? No, no podemos hacerlo pensando en que la distancia es una línea recta ya que la tierra no es plana (por lo menos para mi)¿Se empieza a complicar el asunto? ¡No, para nada! Siga leyendo, siga 🙂

En mi caso particular me pregunté esto por dos motivos esenciales:

  • Dadas dos latitudes y longitudes cualquieras ¿Cómo hacían antaño para calcular la distancia entre ambos?
  • Necesitaba calcular la distancia entre mi posición y un marcador cualquiera.

Law-of-haversines

“Si existen tantas aplicaciones que hacen eso, es porque alguien ya lo debe haber solucionado”. Pensé pa’ mis adentros.
Leyendo por todos lados llegué a la conclusión que la forma mas rápida de resolverlo era mediante el “método de Haversine”.
Vamos a Wikipedia y nos encontramos con una definición formal que dice lo siguiente:

La fórmula del semiverseno es una importante ecuación para la navegación astronómica, en cuanto al cálculo de la distancia de círculo máximo entre dos puntos de un globo sabiendo su longitud y su latitud. Es un caso especial de una fórmula más general de trigonometría esférica, la ley de los semiversenos , que relaciona los lados y ángulos de los “triángulos esféricos”

Y ahí es cuando uno dice “Pa’que busqué esta explicación que es peor que el problema. ¡Abrime el Google Maps y dejemonos de jorobar!” Siempre trato de ser un tipo pragmático, alguien que resuelve (o por lo menos muere en el intento) problemas. Y por ello voy y busco la fórmula práctica de Haversine. La misma es la siguiente:

haversine

Y la seguimos enmarañando… Para ayudar un poco más vamos a un ejemplo práctico:

Supongamos que tenemos las latitudes y longitudes de dos puntos (que casualmente coinciden con Ushuaia y Río Grande):

Ushuaia
Latitud: -54.807222°
Longitud:-68.304444°

Río Grande
Latitud: -53.783333°
Longitud: -67.7°

Y queremos calcular la distancia que los separa (su círculo máximo)

1) Abrimos Google Maps… ¡Naaa, no era tan fácil!

2) Reemplazamos los valores en la fórmula (el radio medio de la tierra es 6371 km) y los metemos en una calculadora o si somos mas rústicos (Krupoviesa Style) nos auxiliamos de nuestras tablas logarítmicas y calculamos la distancia que nos da:

120.41 km

Como ven, la fórmula es un tanto enquilombada y no es muy práctica para resolver algo rápido así que les dejo una

YAPA:

En Python existe el paquete Haversine que nos resuelve tener que andar programando una función para usar Haversine o usar la fórmula. El mismo se usa como sigue:

1) Lo instalamos mediante pip: sudo pip install haversine
2) Abrimos ipython(por ejemplo) y escribimos lo siguiente

from haversine import haversine

Ushuaia=(-54.807222,-68.304444)
RioGrande=(-53.783333,-67.7)
haversine(Ushuaia,RioGrande)

¡Espero que haya sido de utilidad!

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

w

Conectando a %s