Distancia total entre pares de puntos geográficos
La calculadora de distancia total entre pares mide la distancia de círculo máximo de cada par no ordenado de un conjunto de puntos geográficos y suma todas las mediciones.
Ejecutar — gratis
Está concebida para analizar conectividad, comparar redes de ubicaciones, diagnosticar agrupaciones y resolver cualquier flujo que requiera una medida reproducible de la dispersión geográfica. Introduzca coordenadas decimales de latitud y longitud; el resultado indicará la cantidad de puntos, el número de pares evaluados y la distancia combinada en kilómetros, millas y metros.
Qué indica la distancia total entre pares
La distancia total entre pares condensa en un único valor todas las separaciones geográficas directas de un conjunto de puntos. La calculadora combina cada punto con todos los que aparecen después, mide el trayecto más corto sobre una Tierra esférica y añade la medición una sola vez. Por ejemplo, cuatro ubicaciones forman seis pares no ordenados; invertir un par no genera otra aportación. El resultado resulta útil cuando interesa la dispersión espacial general y no una ruta, un perímetro o la distancia desde un centro elegido. Un grupo compacto produce un total menor que otro muy disperso con la misma cantidad de ubicaciones. Como el total también aumenta al añadir puntos, compare conjuntos del mismo tamaño si desea contrastar directamente su dispersión, o use el número de pares indicado para calcular externamente la distancia media entre pares. Las coordenadas duplicadas se admiten y aportan una distancia cero a su par, de modo que se conservan las observaciones repetidas en vez de eliminarlas silenciosamente.
Cómo se realiza el cálculo
Cada par se evalúa con la fórmula de Haversine y un radio terrestre medio de 6,371.0088 kilómetros. La latitud y la longitud se convierten de grados decimales a radianes, sus diferencias se aplican a la fórmula esférica y el ángulo central obtenido se multiplica por ese radio. Así se calcula la distancia de círculo máximo: el trayecto superficial más corto sobre una esfera, no una línea recta que atraviese la Tierra ni una distancia por carretera, a pie o sobre una red. La implementación limita el valor intermedio de Haversine a su intervalo matemático, lo que evita problemas de coma flotante en puntos casi idénticos o casi antípodas. Después acumula los valores sin redondear en kilómetros antes de producir totales estables, redondeados en kilómetros, millas y metros. Las longitudes pueden abarcar de -180 a 180, por lo que los pares que cruzan el antimeridiano se resuelven naturalmente mediante el cálculo trigonométrico periódico. Este modelo esférico es coherente y adecuado para análisis generales de conectividad, aunque un levantamiento de alta precisión requiere un método geodésico elipsoidal.
Cómo preparar los puntos e interpretar el resultado
Proporcione entre dos y 1,000 registros, cada uno con campos numéricos de latitud y longitud. La latitud debe situarse entre -90 y 90 grados, y la longitud entre -180 y 180 grados. Use grados decimales con signo: las coordenadas septentrionales y orientales son positivas, mientras que las meridionales y occidentales son negativas. No introduzca símbolos de grado, letras de puntos cardinales ni cadenas numéricas, pues la validación estricta evita conversiones ambiguas. La calculadora informa de n(n−1)/2 pares, lo que permite confirmar que se evaluó el conjunto completo. Recuerde que el total depende tanto de la dispersión geográfica como del número de observaciones: duplicar una muestra con distribución similar puede producir mucho más del doble de pares. Para comparar conjuntos de tamaños diferentes, divida la distancia total por el número de pares y obtendrá la distancia media entre pares, o conserve ambos valores en su análisis. Con el límite de 1,000 puntos, la calculadora evalúa 499,500 pares y acota de manera práctica el trabajo cuadrático sin dejar de admitir conjuntos importantes de instalaciones, sensores o áreas de servicio.
Qué puede hacer con ella
Comparar redes de instalaciones
Mida si conjuntos del mismo tamaño de almacenes, clínicas u oficinas están concentrados o dispersos geográficamente.
Evaluar la cohesión de grupos
Utilice la suma y el número de pares para obtener un diagnóstico reproducible basado en la distancia media de una agrupación geográfica.
Seguir la extensión de sensores
Compare instantáneas con la misma cantidad de dispositivos para comprobar si una red de campo se ha expandido o contraído.
Preguntas frecuentes
¿Cuánto cuesta una solicitud de API?
Cada solicitud de API cuesta $0.002. La calculadora del navegador puede ejecutar localmente la misma lógica determinista.
¿Se cuenta cada par dos veces?
No. Cada par no ordenado aporta una sola vez, por lo que n puntos producen n(n−1)/2 cálculos de distancia.
¿Qué modelo de distancia se utiliza?
La calculadora utiliza la fórmula de Haversine y un radio terrestre medio de 6,371.0088 kilómetros.
¿Puedo incluir coordenadas duplicadas?
Sí. Los registros duplicados permanecen en el conjunto y la distancia entre coordenadas idénticas aporta cero.
¿Es una distancia de carretera o de viaje?
No. Mide la distancia superficial de círculo máximo más corta y no sigue carreteras, fronteras, terrenos ni redes de transporte.
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/total-pairwise-distance \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"points":[{"latitude":0,"longitude":0},{"latitude":0,"longitude":1},{"latitude":1,"longitude":0}]}'const res = await fetch("https://api.kit.forhosting.com/geo/total-pairwise-distance", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"points": [
{
"latitude": 0,
"longitude": 0
},
{
"latitude": 0,
"longitude": 1
},
{
"latitude": 1,
"longitude": 0
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/total-pairwise-distance",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"points": [
{
"latitude": 0,
"longitude": 0
},
{
"latitude": 0,
"longitude": 1
},
{
"latitude": 1,
"longitude": 0
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/total-pairwise-distance", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"points":[{"latitude":0,"longitude":0},{"latitude":0,"longitude":1},{"latitude":1,"longitude":0}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"points":[{"latitude":0,"longitude":0},{"latitude":0,"longitude":1},{"latitude":1,"longitude":0}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/total-pairwise-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
{
"points": [
{
"latitude": 0,
"longitude": 0
},
{
"latitude": 0,
"longitude": 1
},
{
"latitude": 1,
"longitude": 0
}
]
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.total_pairwise_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.
Límites
min_points | 2 |
max_points | 1000 |
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. |