Clique no banner para conhecer e adquirir o meu treinamento de Bancos de Dados no Azure

SQL Server – Como calcular a distância entre dois locais utilizando latitude e longitude (sem API)

Post Views 14,166 views
Reading time 3 minutes

Hey guys!

Nesse post, vou demonstrar a vocês como calcular a distância entre dois locais utilizando latitude e longitude (sem API). Em março de 2017, eu demonstrei como fazer isso utilizando a API do Google Maps, no post SQL Server – Como calcular a distância entre dois pontos utilizando a API do Google (CEP, endereço ou latitute e longitude), mas no post de hoje, a distância será calculada apenas utilizando matemática e geometria

Esse cálculo, ao invés de utilizar uma API, pode ser especialmente útil para calcular a distância entre um grande volume de pontos geográficos (a API do Google possui limitações de quantidade de consultas por dia, no plano gratuito).

É importante observar que o cálculo sem API considera uma linha reta entre os 2 pontos, enquanto a API do Google leva em consideração os trajetos e rotas, de acordo com o meio de transporte escolhido, o que pode apresentar valores mais próximos do reais, de acordo com a necessidade, e bem diferentes do cálculo geométrico.

Introduction

Como vocês sabem, as medidas que utilizamos atualmente para identificar a localização geográfica de um ponto no globo são latitude e longitude, que podem ser expressas em duas formas:

  • Latitude: -20.3222, Longitude: -40.3381
  • 20° 19′ 20″ Sul, 40° 20′ 17″ Oeste

A nossa posição sobre a Terra é referenciada em relação a linha do equador e ao meridiano de Greenwich e é expressa em dois valores: a latitude e a longitude. Assim para saber a nossa posição sobre a Terra basta saber a latitude e a longitude.

A latitude é a distância ao Equador medida ao longo do meridiano de Greenwich. Esta distância mede-se em graus, podendo variar entre 0º e 90º para Norte(N) ou para Sul(S). A longitude é a distância ao meridiano de Greenwich medida ao longo do Equador. Esta distância mede-se em graus, podendo variar entre 0º e 180º para Leste(E) ou para Oeste(W).

Créditos: http://coral.ufsm.br/cartografia/

Para identificar a latitude e longitude de um local, você pode utilizar diversas formas. Uma delas, é utilizando o Google Maps, conforme demonstro abaixo:

Calculando a distância entre duas latitudes e longitudes

Para realizar esse cálculo, vou utilizar a fórmula de Haversine, uma importante equação usada em navegação, fornecendo distâncias entre dois pontos de uma esfera a partir de suas latitudes e longitudes, tendo como embasamento matemático, a Lei dos Cossenos, considerando no modelo a curvatura da Terra, isto é o raio da mesma, que possui o valor de aproximadamente 6.371 km ou 3.959 milhas.

Para demonstração desse cálculo, vou utilizar a latitude e longitude que enviei no exemplo acima (Shopping Vitória / -20.3135958, -40.2893737) e comparar com as coordenadas do Shopping Vila Velha (-20.3480338, -40.2975204) utilizando a função proposta nesse artigo, que irá retornar a distância entre os dois pontos em KM.

Comparando com o Google Maps, podemos notar que a distância calculada fica bem próxima:

O código dessa função está disponível aqui:

Vale ressaltar que adicionei um percentual de ajuste de 15% no valor para trazer a distância de forma mais aproximada ao real.

And that's it, folks!
Espero que tenham gostado desse post.

Um abraço e até a próxima.