Distancia de un punto a una línea de círculo máximo
Esta calculadora mide la distancia esférica más corta desde una coordenada de latitud y longitud hasta el círculo máximo completo definido por otras dos coordenadas.
Ejecutar — gratis
A diferencia de una calculadora de segmentos, no se detiene en los puntos definitorios: la línea continúa alrededor del globo en ambas direcciones. El resultado incluye metros, kilómetros y grados angulares, emplea por defecto el radio terrestre medio y admite un radio esférico personalizado para otros cuerpos o escalas.
Defina el punto y la línea infinita de círculo máximo
Introduzca la coordenada consultada mediante point_lat y point_lon, y proporcione después dos coordenadas situadas sobre la línea deseada. Esas coordenadas son line_start_lat con line_start_lon y line_end_lat con line_end_lon. Juntas determinan un círculo máximo, es decir, la intersección de la esfera con un plano que atraviesa su centro. El cálculo considera ese círculo como una línea infinita: continúa más allá de ambos puntos y finalmente rodea el globo. Esta diferencia es importante cuando el pie de la perpendicular queda fuera del arco corto comprendido entre los puntos definitorios. Un cálculo de segmento elegiría entonces un extremo, mientras que esta capacidad sigue midiendo hasta el círculo máximo prolongado. La latitud debe estar entre -90 y 90 grados, y la longitud entre -180 y 180 grados. Los puntos definitorios no pueden ser idénticos ni antípodas, porque en esos casos no determinan un plano único. Puede enviar grados decimales como números o cadenas numéricas estrictas.
Comprenda el cálculo esférico y el resultado
Cada coordenada se convierte en un vector unitario tridimensional desde el centro de la esfera. El producto vectorial de los dos vectores de la línea genera una normal al plano del círculo máximo. Tras normalizarla, el valor absoluto de su producto escalar con el vector del punto consultado proporciona el seno de la separación angular perpendicular. El arcoseno produce el menor ángulo sin signo entre el punto y el círculo máximo. Al multiplicarlo por radius_m se obtiene distance_m; distance_km es el mismo valor dividido entre mil. La respuesta también ofrece angular_distance_deg para trabajos con ángulos esféricos. El radio predeterminado es 6,371,008.8 metros, el radio terrestre medio de la IUGG, aunque usted puede indicar un radio positivo diferente. Es un modelo esférico, no una solución geodésica elipsoidal. La representación vectorial evita la distorsión plana de la longitud y gestiona naturalmente las líneas que cruzan el antimeridiano.
Interprete correctamente la distancia mínima
La distancia devuelta nunca es negativa y responde a una pregunta precisa: ¿a qué distancia está el punto consultado del lugar más cercano en cualquier parte del círculo máximo completo? No indica si el punto queda a la izquierda o a la derecha de una ruta orientada, cuánto se avanza por la ruta hasta el pie perpendicular ni si ese pie está entre las coordenadas definitorias. Esas preguntas requieren cálculos de desviación transversal con signo o de segmento. Un resultado cero significa que el punto pertenece al mismo plano de círculo máximo dentro de la precisión numérica, aunque esté muy lejos del arco suministrado. Al compararlo con mediciones topográficas locales, recuerde que el modelo representa la Tierra como una esfera: el planeta real es un elipsoide oblato, el terreno añade elevación y los trayectos prácticos pueden seguir carreteras o espacios autorizados. Para resultados reproducibles, conserve el radio de entrada. Invertir los puntos cambia el signo de la normal, pero no esta distancia absoluta.
Qué puede hacer con ella
Comprobar una trayectoria aérea prolongada
Mida la separación de un punto de ruta respecto de la geodésica completa definida por dos coordenadas, incluso fuera del arco indicado.
Validar geometría cartográfica global
Compruebe si coordenadas destinadas a compartir un círculo máximo cumplen una tolerancia esférica sin proyectarlas en un mapa plano.
Modelar otro cuerpo esférico
Indique un radio personalizado para calcular la distancia equivalente en un planeta, una luna, un globo o una esfera abstracta.
Preguntas frecuentes
¿Cuánto cuesta una solicitud de API?
Cada solicitud de API cuesta $0.002. La calculadora del navegador puede ejecutarse localmente gratis.
¿La línea se limita al arco entre los dos puntos?
No. El cálculo usa el círculo máximo completo, prolongado por ambos puntos en las dos direcciones.
¿Por qué se rechazan puntos idénticos o antípodas?
Ninguno de esos pares determina un único plano de círculo máximo, por lo que la línea sería ambigua.
¿La calculadora utiliza el elipsoide WGS 84?
No. Emplea por defecto una esfera con el radio terrestre medio de la IUGG o el radio personalizado que usted indique.
¿Invertir los dos puntos cambia el resultado?
No. La inversión cambia el signo de la normal del plano, pero la distancia perpendicular absoluta permanece igual.
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/point-to-line-distance \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"point_lat":10,"point_lon":20,"line_start_lat":0,"line_start_lon":0,"line_end_lat":0,"line_end_lon":90}'const res = await fetch("https://api.kit.forhosting.com/geo/point-to-line-distance", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"point_lat": 10,
"point_lon": 20,
"line_start_lat": 0,
"line_start_lon": 0,
"line_end_lat": 0,
"line_end_lon": 90
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/point-to-line-distance",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"point_lat": 10,
"point_lon": 20,
"line_start_lat": 0,
"line_start_lon": 0,
"line_end_lat": 0,
"line_end_lon": 90
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/point-to-line-distance", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"point_lat":10,"point_lon":20,"line_start_lat":0,"line_start_lon":0,"line_end_lat":0,"line_end_lon":90}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"point_lat":10,"point_lon":20,"line_start_lat":0,"line_start_lon":0,"line_end_lat":0,"line_end_lon":90}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/point-to-line-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
{
"point_lat": 10,
"point_lon": 20,
"line_start_lat": 0,
"line_start_lon": 0,
"line_end_lat": 0,
"line_end_lon": 90
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.point_to_line_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. |