Distancia haversine - km, mi y m de círculo máximo entre dos puntos
Obtenga la distancia de círculo máximo entre dos puntos GPS en kilómetros, millas y metros a la vez: de (40,7128; -74,006) a (51,5074; -0,1278) hay 5570,22218 km, medidos sobre una esfera de 6371 km de radio. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Lat1
- 40,7128
- Lng1
- -74,006
- Lat2
- 51,5074
- Lng2
- -0,1278
- Km
- 5 570,22218
- Mi
- 3 461,175597
- M
- 5 570 222,18
Cuando necesita el camino más corto sobre la superficie de la Tierra entre dos coordenadas GPS, la matemática plana y la simple distancia euclidiana están equivocadas: ignoran la curvatura y producen grandes errores en saltos de ciudad a ciudad y de país a país.
Qué calcula realmente la fórmula haversine
La fórmula haversine es una manera numéricamente estable de evaluar el ángulo central entre dos puntos sobre una esfera a partir de sus latitudes y longitudes, para luego multiplicar ese ángulo por el radio de la esfera y obtener la longitud del arco. Dicho de forma sencilla: dados el punto A y el punto B, responde cuánto recorrería usted si siguiera el camino más corto sobre un globo terráqueo liso en lugar de un mapa plano.
No emplea un modelo elipsoidal como Vincenty o Karney sobre WGS84, de modo que los resultados pueden diferir en una pequeña fracción de un por ciento respecto a las bibliotecas geodésicas que modelan el achatamiento polar; por lo general esto basta para comprobaciones de radio de tiendas, franjas de tiempo estimado de entrega y agrupaciones de analítica, y no sustituye a la topografía de grado profesional. La salida siempre son tres unidades: kilómetros (km), millas terrestres internacionales (mi, con 1609.344 metros por milla) y metros (m).
Contrato de entrada, rangos de coordenadas y errores frecuentes
La latitud debe estar en el intervalo cerrado de −90 a 90; la longitud debe estar en −180 a 180 inclusive. Los campos que faltan, los valores no finitos o las cadenas que no se interpretan como números también fallan la validación antes de calcular cualquier distancia.
Un fallo habitual del cliente es intercambiar latitud y longitud (por ejemplo, pegar centros de ciudades como lng,lat por costumbre al estilo GeoJSON): la llamada puede tener éxito si ambos números siguen dentro de los dos rangos, pero la distancia carecerá de sentido para las ciudades que usted pretendía; compruebe siempre que lat es norte-sur y lng es este-oeste. Los puntos idénticos devuelven correctamente distancia cero. Se admiten los pares antipodales; el acotamiento interno impide que los casos límite de coma flotante produzcan NaN.
Dónde encaja la distancia de círculo máximo en la tubería de un producto
Utilice haversine como una primitiva de distancia barata y auditable dentro de las barreras de radio en el pago, la selección del almacén más cercano, las señales de fraude que comparan la ciudad de facturación con el GPS del dispositivo, los resúmenes de actividad de apps deportivas y los trabajos masivos de enriquecimiento de CSV que necesitan km o millas junto a cada par origen-destino. Combínela con un geocodificador solo cuando parta de direcciones; una vez que ya tiene lat/lng, evite volver a geocodificar únicamente para obtener la distancia.
Para el enrutamiento con varias paradas, el tiempo de viaje por carretera o los caminos con indicaciones giro a giro, conserve un motor de enrutamiento dedicado: haversine es en línea recta, no distancia de conducción. Para los límites legales de propiedades o el trabajo catastral, use geodésicas elipsoidales y un CRS local.
Qué puede hacer con ella
Localizadores de tiendas y comprobaciones de radio de entrega
Compare el marcador GPS de un comprador con la coordenada de cada tienda o tienda oscura y conserve solo las ubicaciones dentro de N kilómetros o millas antes de ordenarlas por inventario o por tiempo estimado.
Prefiltro de logística y almacenes
En un sistema de flotas o de varios almacenes, descarte los centros candidatos que estén fuera de un umbral de círculo máximo para que las costosas llamadas de enrutamiento por carretera solo se ejecuten sobre la lista corta.
Preguntas frecuentes
¿Qué es la fórmula de distancia haversine?
Es una fórmula de trigonometría esférica que convierte dos latitudes y longitudes en el ángulo central entre ellas, y luego lo multiplica por el radio de la Tierra (aquí 6371 km) para obtener la longitud del arco de círculo máximo.
¿Qué rangos de coordenadas se aceptan?
La latitud debe estar entre −90 y 90 inclusive; la longitud debe estar entre −180 y 180 inclusive.
¿Es lo mismo que la distancia de conducción?
No. Haversine es en línea recta sobre una esfera. La distancia por carretera, el tráfico y la elevación requieren un motor de enrutamiento; use esto para filtros de radio y estimaciones en línea recta.
¿Por qué sale mal la distancia si la herramienta aceptó las coordenadas?
Lo más habitual es haber intercambiado latitud y longitud: ambos números pueden seguir dentro de los rangos válidos, así que nada se rechaza, pero los puntos cambian de sitio. Otra causa es escribir metros de una cuadrícula proyectada en lugar de grados decimales.
¿Cuánto se aleja haversine de una distancia sobre el elipsoide?
Por lo general, una pequeña fracción de punto porcentual. Haversine trata la Tierra como una esfera y no tiene en cuenta el achatamiento de los polos: basta para radios de tienda, franjas de reparto y análisis, pero no para topografía de precisión ni linderos.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/geo/haversine \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"lat1":40.7128,"lng1":-74.006,"lat2":51.5074,"lng2":-0.1278}'const res = await fetch("https://api.kit.forhosting.com/geo/haversine", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"lat1": 40.7128,
"lng1": -74.006,
"lat2": 51.5074,
"lng2": -0.1278
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/haversine",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"lat1": 40.7128,
"lng1": -74.006,
"lat2": 51.5074,
"lng2": -0.1278
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/haversine", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"lat1":40.7128,"lng1":-74.006,"lat2":51.5074,"lng2":-0.1278}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"lat1":40.7128,"lng1":-74.006,"lat2":51.5074,"lng2":-0.1278}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/haversine", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"lat1": 40.7128,
"lng1": -74.006,
"lat2": 51.5074,
"lng2": -0.1278
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.haversine",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
La fórmula haversine trata el planeta como una esfera de radio fijo y devuelve la longitud del arco de círculo máximo: la distancia estándar de primera aproximación que se usa en logística, en API de localizadores de tiendas, en prefiltros de enrutamiento de flotas y en analítica geoespacial. Este endpoint acepta dos pares de latitud/longitud, valida sus rangos y devuelve la distancia en kilómetros, millas terrestres y metros en una sola llamada determinista, sin teselas de mapas, sin geocodificación de terceros y sin saltos de red ocultos.
Qué calcula realmente la fórmula haversine
Esta capacidad utiliza el radio medio convencional de la Tierra de 6371 kilómetros, que es el valor que la mayoría de los fragmentos de código GIS de código abierto, los tutoriales al estilo PostGIS y los SDK móviles documentan para haversine. Las mismas entradas producen siempre el mismo JSON, porque la implementación es aritmética pura con redondeo fijo: sin relojes, sin semillas aleatorias y sin ningún servicio remoto de teselas o de geocodificación en la ruta.
Contrato de entrada, rangos de coordenadas y errores frecuentes
Envíe cuatro números: lat1 y lng1 para el origen, lat2 y lng2 para el destino, todos en grados decimales. Los valores fuera de esos rangos se rechazan con invalid_input y nunca se cobran. Otra trampa es alimentar coordenadas proyectadas o metros de una cuadrícula local en lugar de grados decimales al estilo WGS84; esta API espera únicamente grados geográficos. El precio es un $0.002 fijo por cada elemento correcto en la API; la ruta de la herramienta en el navegador para las capacidades parse de tier A está diseñada para que usted pueda experimentar sin tener que cablear primero toda una tubería.
Dónde encaja la distancia de círculo máximo en la tubería de un producto
Llámela desde un Worker, desde un trabajo de backend o desde un script: pase las cuatro coordenadas, lea km/mi/m del resultado JSON y guárdelos o muéstrelos. Para todo lo intermedio —paneles, SLA y filtros de API— este endpoint es el pequeño bloque de construcción determinista: valida rangos, mide el círculo máximo, devuelve tres unidades, listo.
Casos de integración
Enriquecimiento masivo de CSV de pares origen-destino
Añada columnas de km, mi y m a las exportaciones de envíos, telemetría o eventos sin levantar una pila GIS ni llamar a una API de mapas con facturación.
Preguntas técnicas
¿Qué unidades devuelve geo.haversine?
Cada respuesta correcta incluye km (kilómetros), mi (millas terrestres internacionales) y m (metros), además de la constante radius_km utilizada en el cálculo.
¿Cuánto cuesta la API?
Cada solicitud correcta tiene un precio de $0.002 con cargo a su saldo prepago del KIT de ForHosting. La validación fallida no se cobra. No se requiere ninguna suscripción.