Executando verificação de segurança...
1

V1 - Calculando a distância entre latitude e longitude de dois pontos utilizando o PostgreSQL

Salve lindus e lindas..

Neste artigo, quero ajuda para todos que precisam calcular a distância entre dois pontos usando latitude e longitude.

Recentemente, estudei como posso calcular essa distância, e inicialmente estava criando um serviço a partir da linguagem PHP, calculando origem e destino, obtendo distância em milhas da fórmula de Havesine.

Mas um amigo sugeriu calcular em SQL, e encontrei alguns fóruns que fazem isso e resolvi fazer também.

Então, abaixo estou compartilhando como fazer isso.

É simples. Primeiro, você precisa instalar as extensões em seu banco de dados.

create extension cube;
create extension earthdistance;

Depois, você pode fazer você selecionar a consulta.

select to_char(float8 (point(-23.3871316,-51.952356) <@> point(-23.412796,-51.9260049)), 'FM999999999.00') as distance;

to_char: para converter e retornar analisado com formato de 2 decimais (FM)

float8: para converter o tipo em float.

point: é uma função de postgres para calcular a distância em milhas terrestres entre dois pontos na superfície da Terra.

Este exemplo é com dois pontos fixos, mas você pode usar latitude e longitude da sua tabela quando tiver definido, exemplo:

# você pode obter a localização (latitude e longitude) do usuário, por exemplo:

$latitude = -23.3871316;
$longitude = -51.952356;

e, em seguida, você pode usar esses atributos em sua consulta montada em seu aplicativo.

"
select to_char(float8 (point($latitude,$longitude) <@> point(addresses.latitude,address.longitude)), 'FM999999999.00') as distance;
"

O resultado é a distância da localização do usuário até o endereço definido em sua tabela.

Ok, isso retornará a distância em milhas, para transformar em KM, multiplique o resultado por 1.609344

Obrigado. espero te ajudar.

Até logo.

Reference: https://www.postgresql.org/docs/current/earthdistance.html

Carregando publicação patrocinada...