Bom dia colegas,
Nesse post venho falar sobre databases geoespaciais;
Esses são databases dedicados a trabalharem com tipos de
dado geométricos ou geográficos, basicamente são utilizados em funções que
envolvam cálculos relativos a locais espaciais;
No nosso caso necessitamos de um database geoespacial para encontrar
(selecionar) os serviços que estejam em até X metros de distância de um ponto na
terra informado pelo usuário, realizar esse tipo de consulta com database comum
não é viável e portanto a necessidade desse tipo de database especial que
contem funções especificas para isso;
Após certa pesquisa decidimos utilizar a extrenção postGis
para o database postGree, para instalar em uma instância Windows segui o seguinte tutorial:
Após instalado, fazendo uso de certa pesquisa e testes, cheguei
a seguinte query utilizando a função ST_Distance que nos informa a distância em
metros entre 1 ponto definido por longitude e latitude (no nosso exemplo, longitude
= -46.622282,latitude = -23.6297502) e todos os demais pontos salvos em uma
tabela (no nosso exemplo, utilizado a coluna “point” da tabela ‘public."pontosUsuarios"’)
e mostrar o resultado ordenado por proximidade, segue query:
SELECT
ST_Distance(
ST_Transform(ST_SetSRID(ST_MakePoint(-46.622282,-23.6297502),4326),3857),
ST_Transform(public."pontosUsuarios".point,
3857)
), *
FROM
public."pontosUsuarios"
ORDER BY
ST_Distance(
ST_Transform(ST_SetSRID(ST_MakePoint(-46.622282,-23.6297502),4326),3857),
ST_Transform(public."pontosUsuarios".point,
3857)
) ASC
Espero que isso possa ajudar em futuras implementações caros
colegas.
Nenhum comentário:
Postar um comentário