Como Calcular Distância - Como Calcular La Distancia Entre Dos Puntos En El Plano Cartesiano ...
Como Calcular La Distancia Entre Dos Puntos En El Plano Cartesiano ...

Qual método usar depende do que você está medindo

Se você quer saber a distância entre dois pontos no plano cartesiano, usa a fórmula de Euclides. Se precisa de distância real pela superfície da Terra, aí entra a questão de como calcular distância com coordenadas geográficas, que é bem diferente. A maioria das pessoas começa errando o contexto. Eu já vi alguém aplicar a distância euclidiana em coordenadas GPS para traçar rotas de entrega e acabar com um erro de quase dois quilômetros numa área urbana. O problema não era a matemática, era escolher a ferramenta errada para o tipo de dado.

como calcular distância com coordenadas GPS

O método mais comum é a fórmula de Haversine. Ela leva em conta a curvatura da Terra e dá uma boa aproximação para distâncias de até algumas centenas de quilômetros. Aqui está o passo a passo: Primeiro, você precisa das latitude e longitude de ambos os pontos em graus decimais. Segundo, converte tudo para radianos multiplicando por pi e dividindo por 180. Terceiro, aplica a fórmula:

a = sen²(lat/2) + cos(lat1) × cos(lat2) × sen²(lon/2) c = 2 × atan2(a, (1a))

d = R × c Onde R é o raio da Terra, aproximadamente 6.371 km. O resultado é a distância em linha reta sobre a superfície, também chamada de distância ortodrômica.

Um detalhe que poucos mencionam: a fórmula de Haversine assume uma esfera perfeita. A Terra não é. Para distâncias maiores que 500 km, o erro pode chegar a 0,5% em relação ao modelo geoidal real. Se você precisa de precisão submétrica, use a fórmula de Vincenty, que trabalha com um elipsoide. O custo é que é mais complexa e, em casos raros, pode não convergir para pares de pontos antipodais. Eu tive um problema assim num projeto de monitoramento agrícola. A fórmula de Haversine funcionava bem para as pequenas propriedades, mas quando precisei calcular a distância entre duas Fazendas na divisa de estados, com mais de mil quilômetros de separação, o erro acumulado começou a distorcer os dados de eficiência de combustível. A solução foi migrar para o método de Vincenty com o elipsoide WGS84. O tempo de processamento aumentou em cerca de 30%, mas a precisão melhorou de para metros.

Distância euclidiana para coordenadas planas

Quando você já está num sistema de coordenadas projetadas, como UTM, ou num gráfico simples, a conta é direta: d = ((x2x1)² + (y2y1)²)

É rápido, funciona bem em escala pequena, mas se você tentar aplicar isso em graus de latitude e longitude sem projetar, o resultado vai mentir pra você. Graus de longitude têm largura variável dependendo da latitude. Em 60 graus de latitude, um grau de longitude equivale a metade do que equivoca no equador. Pular essa etapa é o erro mais comum que eu vejo em iniciantes.

👉 Clique no botão abaixo para saber mais sobre o assunto!

Distância de Manhattan para grade urbana

Em cidades com quarteirões retangulares, onde você não pode atravessar prédios, a distância de Manhattan (também chamada de distância L1 ou táxi) faz mais sentido do que a euclidiana: d = |x2x1| + |y2y1|

Isso calcula quantas quadras você teria que andar indo só para baixo e para o lado, sem diagonais. Não substitui um sistema de roteirização real — Google Maps, OSRM, Valhalla — mas é útil para estimativas rápidas quando você não tem acesso a uma API de rotas no momento.

Ferramentas práticas

Se você quer algo pronto, a biblioteca geopy em Python implementa tanto Haversine quanto Vincenty com duas linhas de código. A função geopy.distance.geodesic já usa o modelo elipsoidal certo por padrão e resolve o problema da convergência para pontos antipodais que vincenty puro às vezes enfrenta. Para JavaScript, a biblioteca turf.js tem a função turf.distance() que aceita GeoJSON e retorna a distância em quilômetros usando o mesmo padrão geodésico. É o que eu recomendo para projetos web quando não se quer escrever a matemática do zero.

Planilhas também conseguem fazer Haversine sem programação. A fórmula em uma célula seria algo como: =6371 * 2 * ASIN(RAIZ(SENIOD( (B2-B1)/2 )^2 + COS(B1) * COS(B2) * SENIOD( (C2-C1)/2 )^2))

Onde B1/C1 são a latitude e longitude do ponto 1 em radianos, e B2/C2 do ponto 2. O 6371 é o raio em km. Se suas coordenadas estiverem em graus, use RADIANS() nas células antes.

O que essas fórmulas não fazem

Nenhuma delas considera terreno, trânsito, ruas fechadas, ponte com restrição de peso, ou simplesmente o caminho que alguém realmente dirige. A distância geodésica entre dois pontos é sempre menor ou igual à distância de qualquer rota real. A diferença pode ser de 20% a 40% em áreas urbanas densas, e muito maior em regiões montanhosas. Se o seu objetivo é planejamento logístico, gasto de combustível, ou estimativa de tempo de viagem, o correto é usar um motor de roteirização como OSRM ou Matrix API. Elas levam em conta o grafo viário real. A desvantagem é que exigem servidor próprio ou API paga, e os tempos de resposta ficam na casa de centenas de milissegundos por requisição, não instantâneos como um cálculo local.

Para uma simples contagem de pontos dentro de um raio, por exemplo "todos os clientes a menos de 5 km", a Haversine continua sendo a escolha certa. É rápida, roda em qualquer linguagem, e o erro é irrelevante nessa escala. O problema aparece quando você usa o resultado dessa conta como se fosse distância de direção real. Já perdi horas refazendo análise porque alguém tratou distância geodésica como distância de estrada sem avisar.