Distância haversine - km, mi e m em círculo máximo entre dois pontos
Receba a distância de círculo máximo entre dois pontos de GPS em quilômetros, milhas e metros de uma vez: de (40,7128; -74,006) a (51,5074; -0,1278) são 5570,22218 km, medidos numa esfera de 6371 km de raio. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- 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
Quando você precisa do caminho mais curto sobre a superfície da Terra entre duas coordenadas GPS, a matemática planar e a simples distância euclidiana estão erradas: elas ignoram a curvatura e produzem erros grandes em saltos de cidade para cidade e de país para país. A fórmula de haversine trata o planeta como uma esfera de raio fixo e retorna o comprimento do arco em círculo máximo — a distância padrão de primeira passagem usada em logística, APIs de localização de lojas, pré-filtros de roteamento de frotas e análise geoespacial.
O que a fórmula de haversine de fato calcula
A fórmula de haversine é uma maneira numericamente estável de avaliar o ângulo central entre dois pontos em uma esfera a partir de suas latitudes e longitudes, e depois multiplicar esse ângulo pelo raio da esfera para obter o comprimento do arco. Em termos simples: dados o ponto A e o ponto B, ela responde a que distância você viajaria se seguisse o caminho mais curto sobre um globo liso em vez de um mapa plano.
Esta capacidade usa o raio médio convencional da Terra de 6371 quilômetros, que é o valor documentado para haversine na maioria dos trechos de código GIS de código aberto, nos tutoriais no estilo PostGIS e nos SDKs móveis.
Ela não usa um modelo elipsoidal como Vincenty ou Karney sobre WGS84, portanto os resultados podem diferir por uma pequena fração de percentual das bibliotecas geodésicas que modelam o achatamento polar — em geral, adequado para verificações de raio de loja, faixas de ETA de entrega e categorias de análise, e não um substituto para levantamentos topográficos de precisão. A saída é sempre em três unidades: quilômetros (km), milhas terrestres internacionais (mi, usando 1609,344 metros por milha) e metros (m).
Contrato de entrada, intervalos de coordenadas e erros comuns
A latitude deve estar no intervalo fechado de −90 a 90; a longitude deve estar entre −180 e 180, inclusive. Campos ausentes, valores não finitos ou strings que não são interpretadas como números também falham na validação antes que qualquer distância seja calculada.
Um erro frequente do cliente é trocar latitude e longitude (por exemplo, colar centros de cidades como lng,lat por um hábito no estilo GeoJSON): a chamada pode ter êxito se ambos os números ainda estiverem dentro dos dois intervalos, mas a distância será sem sentido para as cidades pretendidas — sempre verifique novamente se lat é norte-sul e lng é leste-oeste. Pontos idênticos retornam corretamente distância zero. Pares antípodas são suportados; a limitação interna evita que casos-limite de ponto flutuante produzam NaN.
Onde a distância em círculo máximo se encaixa em um pipeline de produto
Use o haversine como uma primitiva de distância barata e auditável dentro de portas de raio de checkout, seleção do armazém mais próximo, sinais de fraude que comparam a cidade de cobrança com o GPS do dispositivo, resumos de atividade de aplicativos esportivos e trabalhos de enriquecimento de CSV em massa que precisam de km ou milhas ao lado de cada par origem–destino. Combine-o com um geocodificador apenas quando você parte de endereços; assim que já tiver lat/lng, evite geocodificar de novo só para obter a distância.
Para roteamento com várias paradas, tempo de viagem por estrada ou trajetos com direções passo a passo, mantenha um motor de roteamento dedicado — o haversine é em linha reta, não distância de percurso. Para limites legais de propriedade ou trabalho cadastral, use geodésicas elipsoidais e um CRS local.
Casos de uso
Localização de lojas e verificações de raio de entrega
Compare o marcador de GPS de um comprador com a coordenada de cada loja ou dark store e mantenha apenas os locais dentro de N quilômetros ou milhas antes de ordenar por estoque ou ETA.
Pré-filtro de logística e armazéns
Em um sistema de frota ou com vários armazéns, descarte os hubs candidatos fora de um limite de círculo máximo para que as chamadas caras de roteamento por estrada rodem apenas na lista final.
Perguntas frequentes
O que é a fórmula de distância haversine?
É uma fórmula de trigonometria esférica que converte duas latitudes e longitudes no ângulo central entre elas e depois multiplica pelo raio da Terra (aqui 6371 km) para obter o comprimento do arco em círculo máximo.
Quais intervalos de coordenadas são aceitos?
A latitude deve estar entre −90 e 90, inclusive; a longitude deve estar entre −180 e 180, inclusive.
Isso é o mesmo que a distância de percurso?
Não. O haversine é em linha reta sobre uma esfera. A distância por estrada, o trânsito e a elevação exigem um motor de roteamento; use isto para filtros de raio e estimativas em linha reta.
Por que a distância sai errada se a ferramenta aceitou as coordenadas?
O mais comum é ter trocado latitude e longitude: os dois números podem continuar dentro das faixas válidas, então nada é recusado, mas os pontos mudam de lugar. Outra causa é digitar metros de uma grade projetada em vez de graus decimais.
Quanto o haversine se afasta de uma distância no elipsoide?
Em geral, uma pequena fração de ponto percentual. O haversine trata a Terra como uma esfera e ignora o achatamento dos polos: serve para raios de loja, faixas de entrega e análises, mas não para topografia de precisão ou divisas de terrenos.
Ferramentas relacionadas
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/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)Exemplo de requisição
{
"lat1": 40.7128,
"lng1": -74.006,
"lat2": 51.5074,
"lng2": -0.1278
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.haversine",
"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. |
Notas técnicas
Este endpoint aceita dois pares de latitude/longitude, valida seus intervalos e retorna a distância em quilômetros, milhas terrestres e metros em uma única chamada determinística, sem blocos de mapa, sem geocodificação de terceiros e sem salto de rede oculto.
O que a fórmula de haversine de fato calcula
As mesmas entradas sempre produzem o mesmo JSON, porque a implementação é aritmética pura com arredondamento fixo — sem relógios, sem sementes aleatórias e sem serviço remoto de blocos ou geocodificação no caminho.
Contrato de entrada, intervalos de coordenadas e erros comuns
Envie quatro números: lat1 e lng1 para a origem, lat2 e lng2 para o destino, todos em graus decimais. Valores fora desses intervalos são rejeitados com invalid_input e nunca são cobrados. Outra armadilha é fornecer coordenadas projetadas ou metros de grade local em vez de graus decimais no estilo WGS84; esta API espera apenas graus geográficos. O preço é um valor fixo de US$ 0,002 por item bem-sucedido na API; o caminho da ferramenta no navegador para as capacidades de parse de tier A foi projetado para que você possa experimentar sem antes montar um pipeline completo.
Onde a distância em círculo máximo se encaixa em um pipeline de produto
Chame-o a partir de um Worker, de um trabalho de backend ou de um script: passe as quatro coordenadas, leia km/mi/m do resultado JSON e armazene ou exiba os valores. Para tudo o que está entre esses casos — painéis, SLAs e filtros de API — este endpoint é o pequeno bloco de construção determinístico: valida intervalos, mede o círculo máximo, retorna três unidades, pronto.
Casos de integração
Enriquecimento em massa de pares origem–destino em CSV
Adicione colunas de km, mi e m a exportações de remessas, telemetria ou eventos sem montar uma pilha GIS nem chamar uma API de mapas cobrada.
Perguntas técnicas
Quais unidades a geo.haversine retorna?
Toda resposta bem-sucedida inclui km (quilômetros), mi (milhas terrestres internacionais) e m (metros), além da constante radius_km usada no cálculo.
Quanto custa a API?
Cada requisição bem-sucedida tem o preço de US$ 0,002, descontado do seu saldo pré-pago do ForHosting KIT. A validação que falha não é cobrada. Nenhuma assinatura é necessária.