Calculadora de Haversine - Distancia de Gran Círculo

Calcula la distancia de gran círculo entre dos coordenadas con la fórmula del haversine. Explica esfera vs plano, precisión, rumbo y código para GPS.

°°
°°
km

¿Qué es la fórmula de Haversine?

La fórmula del haversine calcula la distancia más corta entre dos puntos sobre la superficie de una esfera — para nuestros fines, la Tierra — dadas su latitud y longitud. Devuelve la distancia ortodrómica o de gran círculo: la longitud de la curva más corta que une los dos puntos siguiendo la superficie esférica.

Es la fórmula que la navegación GPS, la planificación de rutas aéreas, las apps de transporte compartido, la optimización de reparto, las superposiciones de radar meteorológico y casi cualquier API de mapas usan cada vez que necesitan responder rápido a «¿cuán lejos están estos dos puntos?». Tiene en cuenta la curvatura terrestre, por lo que se mantiene precisa incluso en distancias intercontinentales donde tratar el planeta como plano fallaría por cientos de kilómetros.

La fórmula se deriva de la ley de los haversines en trigonometría esférica. La función haversine se define como:

hav(θ) = sin²(θ/2) = (1 − cos(θ))/2

Propiedades clave y aplicaciones de la fórmula del haversine:

  • Geometría esférica: trabaja sobre la superficie curva de la Tierra, no sobre una proyección plana que deforma las distancias
  • Navegación: esencial para rutas aéreas, marítimas, planificación de drones y guiado GPS
  • Precisión: ofrece resultados con menos del 0,5 % de error respecto al modelo esférico — suficiente para casi cualquier aplicación de consumo
  • Aritmética estable: la forma con senos al cuadrado evita la pérdida de precisión que sufre la fórmula equivalente con la «ley de cosenos esférica» a distancias pequeñas
  • Rango universal: funciona para cualesquier dos puntos de la Tierra, incluidos pares antípodas (lados opuestos del planeta)

Las aplicaciones modernas incluyen emparejamiento en apps de transporte, estimación de tiempos de entrega, publicidad hiperlocal, predicción meteorológica y cualquier sistema que necesite determinar proximidad o calcular distancias de viaje entre ubicaciones geográficas.

¿Cómo funciona la fórmula de Haversine?

La fórmula del haversine calcula la distancia ortodrómica entre dos puntos sobre una esfera a partir de su latitud y longitud. Usa seno, coseno y arcoseno, y asume que la esfera tiene un radio conocido — típicamente el radio medio terrestre de 6.371 km.

La fórmula completa del haversine:

d = 2r · arcsin(√(sin²(Δφ/2) + cos(φ₁) · cos(φ₂) · sin²(Δλ/2)))

Donde:

  • d = distancia ortodrómica entre los dos puntos
  • r = radio de la Tierra (aproximadamente 6.371 km o 3.959 millas)
  • φ₁, φ₂ = latitudes del punto 1 y 2 (en radianes)
  • Δφ = φ₂ − φ₁ (diferencia de latitud)
  • Δλ = λ₂ − λ₁ (diferencia de longitud)
  • λ₁, λ₂ = longitudes del punto 1 y 2 (en radianes)

La fórmula funciona:

  • Convirtiendo latitud y longitud de grados a radianes (multiplica por π/180)
  • Calculando los haversines de los semiángulos de las diferencias de latitud y longitud
  • Combinándolos con cos(φ₁)·cos(φ₂) para proyectarlos sobre la esfera
  • Tomando el haversine inverso (arcoseno de la raíz cuadrada) para recuperar el ángulo central en radianes
  • Multiplicando el ángulo central por el radio para obtener la distancia real sobre la superficie

Como el cálculo trabaja con senos de semiángulos en vez de cosenos del ángulo completo, se mantiene numéricamente estable incluso cuando los dos puntos están muy cerca — propiedad que la antigua ley de cosenos esférica no tiene.

Ejemplos comunes de distancia Haversine

Algunas distancias ortodrómicas típicas calculadas con la fórmula del haversine:

  • Nueva York a Los Ángeles: ~3.944 km (2.451 millas)
  • Londres a Tokio: ~9.560 km (5.940 millas) — y un vuelo real sigue una ruta polar cercana a esta geodésica
  • Sídney a Melbourne: ~713 km (443 millas)
  • París a Roma: ~1.103 km (685 millas)
  • Hanói a Ciudad Ho Chi Minh: ~1.137 km (706 millas)

Preguntas Frecuentes

Porque la Tierra es redonda, no plana. La distancia pitagórica √((Δx)² + (Δy)²) sirve sobre un plano, donde las coordenadas son independientes de la posición. La latitud y la longitud son ángulos sobre una esfera, así que 1° de longitud en el ecuador cubre ~111 km de terreno real, pero solo ~78 km a 45° de latitud y ~0 km en los polos. Si tratas lat/lon como coordenadas planas (x, y) y aplicas Pitágoras, te equivocarás mucho lejos del ecuador. Para distancias pequeñas (pocos kilómetros dentro de un país) la aproximación equirectangular d ≈ r·√(Δφ² + (cos(φ_media)·Δλ)²) basta; para cualquier distancia continental necesitas haversine o una fórmula elipsoidal completa como la de Vincenty. Haversine tiene en cuenta la curvatura correctamente: calcula la longitud del arco entre los dos puntos sobre la superficie de una esfera, que es el camino que realmente caminarías (o volarías) sobre una Tierra perfectamente redonda. Sin ella, tu app de mapas te diría que Londres está más cerca de Sídney por Singapur que por Hong Kong, cuando en realidad es al revés.

Haversine asume que la Tierra es una esfera perfecta de 6.371 km de radio. La Tierra real es un esferoide oblato — más ancha por el ecuador (6.378 km) que entre los polos (6.357 km) — así que la fórmula se desvía hasta ~0,5 % en el peor caso. Para un vuelo de 10.000 km eso son unos 50 km de error, más que suficiente para importarle a un piloto que navega con carta de papel, pero invisible para un conductor de Uber que cruza la ciudad. Para tareas que exigen más precisión — topografía, geodesia, guiado de misiles, seguimiento de placas tectónicas — los ingenieros usan las fórmulas de Vincenty, que tratan la Tierra como un elipsoide y convergen a precisión centimétrica. Para uso cotidiano (distancia de reparto, emparejamiento de viajes, redes sociales) haversine es de sobra. La otra fuente de error es la elección del radio: 6.371 km es el radio medio (esfera de volumen equivalente); si navegas cerca del ecuador, usar 6.378 km da resultados ligeramente mejores, y cerca de los polos 6.357 km. La mayoría del código usa 6.371 km porque la diferencia entra de lleno en el error intrínseco de haversine.

Un círculo máximo es cualquier círculo en una esfera cuyo centro coincide con el de la esfera — el ecuador es uno, cada meridiano (par de líneas de longitud opuestas) es uno, y la única geodésica entre cualesquier dos puntos no antípodas se sitúa exactamente sobre un círculo máximo. La distancia ortodrómica, que calcula haversine, es el camino más corto entre dos puntos sobre la esfera. Una loxodrómica (línea de rumbo) es un camino que cruza cada meridiano con el mismo ángulo constante — un «rumbo fijo de brújula». Las loxodrómicas se ven rectas en una proyección Mercator, por eso los marineros antiguos las amaban: «pon rumbo noreste» es fácil de seguir sin correcciones continuas. Pero una loxodrómica es más larga que la ruta ortodrómica, a veces drásticamente. Nueva York–Tokio por loxodrómica son unos 11.500 km; por círculo máximo, 10.800 km. Los aviones modernos vuelan el círculo máximo aunque exija ajustar continuamente el rumbo. Haversine devuelve distancia ortodrómica; para distancia loxodrómica se usa otra fórmula basada en la diferencia proyectada en Mercator.

Porque ESE es el camino más corto sobre una esfera. Nueva York está a unos 40° N, Tokio a 35° N — ambos bien en el hemisferio norte. Si trazas una línea recta entre ellos sobre un globo, barre hacia el norte por Alaska, a veces por Rusia, nunca por el Pacífico central. La proyección Mercator — la que usan casi todos los mapas de pared — deforma radicalmente las regiones polares: Groenlandia parece más grande que África aunque es 14 veces menor. Así que una línea «recta» en Mercator (la loxodrómica) se curva hacia abajo y al este, abrazando el Pacífico. La verdadera geodésica, la que representa el haversine, se curva sobre el polo. Por eso las rutas aéreas intercontinentales se ven raras en mapas planos pero rectas en un globo. La misma lógica vale para Sídney–Santiago (sobre la Antártida), Johannesburgo–Sídney (sobre el océano Antártico) y Londres–Auckland (sobre el Ártico). La fórmula del haversine no te da el camino, solo la distancia, pero esa distancia solo tiene sentido en el contexto de ese círculo máximo.

La convención estándar es 6.371.000 m (6.371 km, o 3.959 millas, o 3.440 millas náuticas). Es el radio medio volumétrico — el radio de una esfera con el mismo volumen que la Tierra. Existen tres valores más precisos: el radio ecuatorial (6.378,137 km, usado en el datum WGS84), el polar (6.356,752 km) y el medio (6.371,009 km, promedio geográfico). Las diferencias son pequeñas (~0,3 % pico a pico), pero importan al comparar con datos de referencia. Pilotos y navegantes marítimos usan a menudo 6.371 km y aceptan el pequeño error; los levantamientos geodésicos emplean el elipsoide WGS84. Para millas, la fórmula del haversine es la misma — solo enchufa r = 3.959 (millas estatutarias) o r = 3.440 (millas náuticas) y la respuesta sale en esa unidad. La opción más simple y popular es r = 6.371.008,8 m (radio medio del IUGG), y casi toda implementación de haversine en internet usa este valor o un 6.371 km redondeado.

Haversine da distancia; el rumbo es otro cálculo. El rumbo inicial del punto 1 (φ₁, λ₁) al punto 2 (φ₂, λ₂) es θ = atan2(sin(Δλ)·cos(φ₂), cos(φ₁)·sin(φ₂) − sin(φ₁)·cos(φ₂)·cos(Δλ)), en radianes. Conviértelo a grados y normalízalo a [0, 360) sumando 360 y aplicando módulo. El resultado es la dirección de brújula con la que empezarías a caminar — 0° = norte, 90° = este, 180° = sur, 270° = oeste. En una ruta ortodrómica el rumbo cambia continuamente a lo largo del camino (por eso el mapa del avión muestra tu rumbo desplazándose lentamente), así que la fórmula da el rumbo inicial en el punto 1. Para el rumbo final al llegar al punto 2, intercambia ambos puntos, calcula el rumbo inicial y suma 180° módulo 360°. Usa atan2, no atan(y/x) — la versión de cuatro cuadrantes maneja correctamente todas las combinaciones de signos. Esta fórmula y haversine son los caballos de batalla de casi cualquier librería geográfica: PostGIS, Turf.js, geopy, GeoTools.

JavaScript: function haversine(lat1, lon1, lat2, lon2) { const R = 6371; const toRad = d => d * Math.PI / 180; const dLat = toRad(lat2 - lat1); const dLon = toRad(lon2 - lon1); const a = Math.sin(dLat/2)**2 + Math.cos(toRad(lat1)) * Math.cos(toRad(lat2)) * Math.sin(dLon/2)**2; return 2 * R * Math.asin(Math.sqrt(a)); }. Python es idéntico, cambia Math.sin por math.sin. Trampas comunes: olvidar convertir grados a radianes (sin y cos esperan radianes, pero las coordenadas vienen en grados); confundir el orden de latitud y longitud (algunas librerías usan (lon, lat), la mayoría de las APIs usa (lat, lon)); usar Math.asin en vez del más estable numéricamente atan2(sqrt(a), sqrt(1-a)) para distancias cercanas a antípodas; elegir R = 6378 (ecuatorial) cuando 6371 (medio) es la convención. Para producción, mejor una librería probada: en Python, scipy.spatial.distance, geopy.distance o el paquete haversine; en JavaScript, Turf.js o @turf/distance. Hacerlo a mano funciona pero estos son los baches.

Tres escenarios. Primero, cuando necesitas alta precisión en distancias cortas — para trabajo topográfico submilimétrico o titulación de tierras, la suposición esférica del haversine introduce demasiado error y deberías usar la fórmula inversa de Vincenty sobre un elipsoide WGS84 o un sistema proyectado local (UTM, plano estatal). Segundo, cuando solo necesitas una distancia aproximada en un área pequeña — como «¿están estos dos puntos dentro de 1 km uno del otro en una ciudad?». Entonces la aproximación equirectangular d ≈ R·√(Δφ² + (cos(φ_media)·Δλ)²) son dos llamadas trigonométricas en lugar de seis, corre en 1/3 del tiempo y es precisa al 0,1 % en unos pocos centenares de kilómetros. Para procesamiento por lotes masivo (piensa: emparejar a cada conductor Uber con cada pasajero), el ahorro se suma. Tercero, cuando los puntos están muy cerca de ser antípodas (separación > 179,5°), un haversine ingenuo pierde precisión — las formulaciones basadas en atan2 son más robustas allí. La mayoría de las apps nunca tocan estos casos límite, por lo que haversine sigue siendo el valor por defecto correcto.