Distância de ponto a linha de círculo máximo
Esta calculadora mede a menor distância esférica de uma coordenada de latitude e longitude até o círculo máximo completo definido por outras duas coordenadas.
Executar grátis
Diferentemente de um cálculo de segmento, ela não termina nos pontos definidores: a linha continua ao redor do globo nas duas direções. O resultado inclui metros, quilômetros e graus angulares, usa por padrão o raio médio da Terra e aceita um raio esférico personalizado para outro corpo ou escala geométrica.
Defina o ponto e a linha infinita de círculo máximo
Informe a coordenada consultada em point_lat e point_lon e, em seguida, forneça duas coordenadas que pertençam à linha desejada. Elas são line_start_lat com line_start_lon e line_end_lat com line_end_lon. Juntas, definem um círculo máximo: a interseção da esfera com um plano que passa pelo centro. O cálculo considera esse círculo uma linha infinita, que segue além dos dois pontos e acaba dando a volta no globo. Essa distinção importa quando o pé da perpendicular fica fora do arco menor entre os pontos definidores. Um cálculo de segmento escolheria uma extremidade, enquanto esta capacidade continua medindo até o círculo máximo estendido. A latitude deve ficar entre -90 e 90 graus e a longitude entre -180 e 180 graus. Os pontos definidores não podem ser iguais nem antípodas, pois nenhuma dessas opções identifica um plano único. Você pode enviar graus decimais como números ou strings numéricas estritas, tanto em formulários quanto em chamadas estruturadas da API.
Entenda o cálculo esférico e a resposta
Cada coordenada é convertida em um vetor unitário tridimensional a partir do centro da esfera. O produto vetorial dos dois vetores da linha fornece uma normal ao plano do círculo máximo. Depois da normalização, o valor absoluto do produto escalar dessa normal com o vetor do ponto consultado fornece o seno da separação angular perpendicular. O arco seno produz o menor ângulo sem sinal entre o ponto e o círculo máximo. Multiplicar esse ângulo por radius_m gera distance_m, enquanto distance_km é o mesmo valor dividido por mil. A resposta também inclui angular_distance_deg para quem trabalha diretamente com ângulos esféricos. O raio padrão é 6,371,008.8 metros, o raio médio da Terra adotado pela IUGG, mas você pode fornecer outro raio positivo. Este é um cálculo esférico, e não uma solução geodésica elipsoidal. A representação vetorial evita a distorção plana das longitudes e trata naturalmente linhas que cruzam o antimeridiano.
Interprete corretamente a menor distância
A distância retornada é sempre não negativa e responde a uma pergunta específica: qual é a distância do ponto consultado ao local mais próximo em qualquer parte do círculo máximo completo? Ela não informa se o ponto está à esquerda ou à direita de uma rota orientada, quanto é preciso avançar na rota até o pé perpendicular nem se esse pé fica entre as coordenadas definidoras. Essas perguntas exigem lógica de distância transversal com sinal ou de segmento. Um resultado zero significa que o ponto pertence ao mesmo plano de círculo máximo dentro da precisão de ponto flutuante, mesmo que esteja muito além do arco fornecido. Ao comparar o valor com medições locais, lembre-se de que a Terra é tratada como esfera. O planeta real é um elipsoide oblato, o terreno acrescenta elevação e trajetos práticos podem seguir estradas ou espaços autorizados. Para automações reproduzíveis, guarde o raio de entrada. Inverter os pontos muda o sinal da normal, mas nunca esta distância absoluta.
Casos de uso
Verificar uma rota aérea estendida
Meça a distância de um waypoint à geodésica completa definida por duas coordenadas, mesmo quando o pé mais próximo fica além do arco informado.
Validar geometria cartográfica global
Confira se coordenadas destinadas ao mesmo círculo máximo respeitam uma tolerância esférica sem projetá-las em um mapa plano.
Modelar outro corpo esférico
Forneça um raio personalizado para calcular a distância equivalente em um planeta, lua, globo ou esfera abstrata.
Perguntas frequentes
Quanto custa uma solicitação da API?
Cada solicitação da API custa US$ 0,002. A calculadora do navegador pode ser executada localmente de graça.
A linha se limita ao arco entre os dois pontos?
Não. O cálculo usa o círculo máximo completo, que se estende pelos dois pontos nas duas direções.
Por que pontos iguais ou antípodas são rejeitados?
Nenhum desses pares identifica um único plano de círculo máximo; portanto, a linha seria ambígua.
A calculadora utiliza o elipsoide WGS 84?
Não. Ela usa por padrão uma esfera com o raio médio da Terra da IUGG ou um raio personalizado informado por você.
Inverter os dois pontos altera a resposta?
Não. A inversão troca o sinal da normal do plano, mas a distância perpendicular absoluta permanece igual.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
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)Exemplo de requisição
{
"point_lat": 10,
"point_lon": 20,
"line_start_lat": 0,
"line_start_lon": 0,
"line_end_lat": 0,
"line_end_lon": 90
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.point_to_line_distance",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |