Distancia total de ruta
Obtenga la longitud total de una ruta por varios puntos GPS, tramo a tramo: los tres waypoints del ejemplo suman 327,98509 km, o 203,800486 millas, medidos a vuelo de pájaro. También ve cada tramo en kilómetros. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Cuando un recorrido se define como una lista ordenada de coordenadas GPS — una gira de entregas, la exportación de una ruta de senderismo, un plan de vuelo o el boceto de un viaje multi-ciudad — el primer número que suelen necesitar los equipos de producto es la longitud total en línea recta (a vuelo de pájaro) de esa polilínea. Las herramientas de distancia por pares solo cubren dos puntos a la vez; las de perímetro de anillo cerrado le obligan a volver al origen. Esta calculadora de distancia total de ruta acepta dos o más waypoints, mide el arco de círculo máximo de cada tramo consecutivo con la fórmula de haversine sobre una Tierra esférica fija y devuelve la longitud sumada en kilómetros, millas estatutarias y metros, más cada tramo en kilómetros.
Cómo se calcula la distancia de ruta multi-waypoint en círculo máximo
Una ruta multi-waypoint es una polilínea abierta ordenada sobre la Tierra: del punto uno al dos, del dos al tres, y así hasta la última coordenada. Esta capacidad no cierra el camino de vuelta al origen; si necesita la longitud de un anillo geográfico cerrado —parcela, zona de entrega u otra frontera— use en su lugar una herramienta de perímetro de polígono.
Para cada par consecutivo el manejador evalúa la fórmula de haversine, una identidad de trigonometría esférica numéricamente estable que convierte dos latitudes y longitudes en el ángulo central entre ellas y multiplica por el radio medio de la Tierra de 6371 kilómetros. Ese radio coincide con la convención de muchos fragmentos GIS abiertos y con la familia haversine de dos puntos de este catálogo, de modo que una llamada con dos waypoints reproduce la misma longitud de arco que una herramienta de distancia por pares, salvo el redondeo compartido.
Las millas estatutarias usan la conversión internacional de 1609.344 metros por milla. El modelo es esférico, no geodésicas elipsoidales WGS84 de Vincenty o Karney, por lo que los resultados pueden diferir en una pequeña fracción de porcentaje de las bibliotecas de topografía — habitualmente suficiente para prefiltros logísticos, planificadores de viaje, resúmenes deportivos y cubos de analítica, y no un sustituto del levantamiento catastral. Se admiten puntos antípodas y casi idénticos; el acotado interno evita que casos límite de coma flotante produzcan NaN, y waypoints consecutivos idénticos aportan longitud cero.
Dónde encaja la distancia total de ruta en productos y pipelines
Empareje con un geocodificador solo cuando parta de direcciones; una vez tenga lat y lon, evite geocodificar de nuevo solo para medir longitud. Para distancia de conducción giro a giro, ETA con tráfico o perfiles de elevación, conserve un motor de enrutado dedicado: esta herramienta es longitud de polilínea de círculo máximo, no coste de red viaria.
Para fronteras cerradas use perímetro de polígono; para un único origen–destino basta una llamada haversine de dos puntos, pero productos multi-ciudad y multi-checkpoint necesitan la forma de ruta sumada para que una petición reemplace n−1 llamadas por pares y garantice un orden coherente. La validación fallida no consume saldo. Mantenga listas modestas para UX interactiva, fije totales redondeados en las pruebas y obtendrá un bloque pequeño y auditable para cada canal que KIT ya sirve.
Qué puede hacer con ella
Bocetos de entrega multi-parada y servicio de campo
Sume tramos de círculo máximo entre almacén y pins de clientes para estimar la longitud del tour antes de gastar presupuesto en APIs de enrutado por carretera.
Titulares de distancia de tracks GPX y GeoJSON
Reduzca un track exportado de senderismo, ciclismo o vuelo a totales en km, mi y m más segmentos por tramo para paneles y tarjetas para compartir.
GIS de aula y enriquecimiento masivo de itinerarios
Añada totales de ruta multi-ciudad a vuelo de pájaro a datos de lección, planificadores de viaje o filas CSV sin levantar una pila GIS.
Preguntas frecuentes
¿Se cierra el camino de vuelta al primer waypoint?
No. Esta herramienta mide una polilínea abierta. Para el perímetro de un anillo geográfico cerrado, use en su lugar una calculadora de perímetro de polígono.
¿Cuál es el número mínimo de waypoints?
Se requieren al menos dos puntos {lat, lon}.
¿Es lo mismo que la distancia de conducción o por carretera?
No. Los resultados son a vuelo de pájaro sobre una esfera. La distancia por carretera, el tráfico y la elevación requieren un motor de enrutado; use esto para longitud de polilínea y prefiltros.
¿En qué unidades sale el total?
En kilómetros por defecto, o en millas terrestres o metros si lo prefiere. Siempre se muestran los tres totales y cada tramo en kilómetros, y una milla se cuenta como 1609,344 metros.
¿Qué pasa si intercambio la latitud y la longitud?
Si ambos números siguen dentro de los rangos válidos, la ruta se mide igual y el total no tiene sentido. Compruebe cuál es la latitud y cuál la longitud antes de medir una lista larga.
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/route-total-distance \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"waypoints":[{"lat":40.7128,"lon":-74.006},{"lat":39.9526,"lon":-75.1652},{"lat":38.9072,"lon":-77.0369}]}'const res = await fetch("https://api.kit.forhosting.com/geo/route-total-distance", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"waypoints": [
{
"lat": 40.7128,
"lon": -74.006
},
{
"lat": 39.9526,
"lon": -75.1652
},
{
"lat": 38.9072,
"lon": -77.0369
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/route-total-distance",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"waypoints": [
{
"lat": 40.7128,
"lon": -74.006
},
{
"lat": 39.9526,
"lon": -75.1652
},
{
"lat": 38.9072,
"lon": -77.0369
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/route-total-distance", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"waypoints":[{"lat":40.7128,"lon":-74.006},{"lat":39.9526,"lon":-75.1652},{"lat":38.9072,"lon":-77.0369}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"waypoints":[{"lat":40.7128,"lon":-74.006},{"lat":39.9526,"lon":-75.1652},{"lat":38.9072,"lon":-77.0369}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/route-total-distance", 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
{
"waypoints": [
{
"lat": 40.7128,
"lon": -74.006
},
{
"lat": 39.9526,
"lon": -75.1652
},
{
"lat": 38.9072,
"lon": -77.0369
}
]
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.route_total_distance",
"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
Cómo se calcula la distancia de ruta multi-waypoint en círculo máximo
Las longitudes de cada tramo se guardan en kilómetros, se suman a precisión completa y luego se redondean para un contrato JSON estable: seis decimales para kilómetros y millas, tres para metros.
Contrato de entrada, unidades, alias y errores de validación
La latitud debe estar en el intervalo cerrado de −90 a 90; la longitud en −180 a 180 inclusive. El unit opcional elige qué valor rellena el campo total principal: km (predeterminado), mi o m. Un solo waypoint, un array vacío o más de cinco mil puntos fallan la validación antes de calcular distancia. Intercambiar lat y lon es un error frecuente del cliente: si ambos números aún caben en ambos rangos, la llamada puede tener éxito con un camino absurdo, así que verifique siempre norte-sur frente a este-oeste antes de trabajos masivos. Envíe un cuerpo JSON con un array waypoints obligatorio de al menos dos objetos, cada uno con latitud y longitud en grados decimales al estilo WGS84. Valores fuera de rango, no finitos, campos ausentes, cadenas vacías o elementos que no sean objetos se rechazan con invalid_input y no se cobran. El array acepta los alias de transporte points, coordinates y route; cada vértice acepta latitude por lat y longitude o lng por lon, para que clientes al estilo GeoJSON y móviles mapeen campos sin un paso de remodelado. Con independencia de unit, toda respuesta correcta incluye siempre total_km, total_mi y total_m para que el cliente muestre varias unidades sin una segunda llamada. El payload también informa waypoint_count, segment_count (siempre uno menos que el recuento de waypoints en una ruta abierta válida), segments_km como lista ordenada de longitudes de tramo, y earth_radius_km igual a 6371 para auditoría. El precio es un $0.002 fijo por ítem correcto en la API; la vía tier-A en el navegador está pensada para comprobaciones interactivas sin montar primero un pipeline completo.
Dónde encaja la distancia total de ruta en productos y pipelines
Use este endpoint siempre que ya disponga de coordenadas ordenadas y necesite una longitud de recorrido a vuelo de pájaro transparente: bocetos de entrega multi-parada antes del enrutado por carretera, exportaciones de tracks GPX o GeoJSON reducidas a una distancia titular, laboratorios GIS de aula que comparan la longitud de la polilínea con mapas planos, aplicaciones deportivas que resumen segmentos entre puntos de control, y señales de fraude o riesgo que contrastan itinerarios declarados con cotas en línea recta. Llámelo desde un Worker, un trabajo de backend o un script: pase la lista de waypoints, lea total y los tres campos de unidad y, si lo desea, guarde segments_km junto a cada tramo para desgloses de interfaz.
Preguntas técnicas
¿Cómo se calcula la distancia total de la ruta?
Cada par consecutivo de waypoints se mide con la fórmula haversine de círculo máximo en una esfera de radio 6371 km; las longitudes de tramo se suman para obtener total_km, total_mi y total_m.
¿Cuánto cuesta la API?
Cada solicitud correcta se tarifica a $0.002 del saldo prepago ForHosting KIT. La validación fallida no se cobra. La herramienta del navegador es gratuita.