Aproveitando o tópico, alguém poderia dar uma ajuda fazendo favor?
Preciso também buscar quais são os pontos mais próximos de um determinado ponto, minha tabela está desse jeito:
id | nome | latitude | longitude
Em um tutorial, consegui criar a coluna geom da seguinte forma:
SELECT AddGeometryColumn( 'public', 'estacao', 'geom', 32661, 'POINT', 2 );
Depois, fiz o seguinte código para gerar os valores espaciais de cada ponto:
UPDATE estacao SET geom = ST_transform(ST_PointFromText('POINT(' || longitude || ' ' || latitude || ')',4269),32661);
No tutorial dizia que para fazer uma busca dos pontos mais próximos deveria ser desta maneira:
SELECT nome
FROM estacao
WHERE
geom && ST_expand(ST_transform(ST_PointFromText('POINT(-49.2653819 -25.4244287)', 4269),32661), 16093) AND ST_distance(ST_transform(ST_PointFromText('POINT(-49.2653819 -25.4244287)', 4269),32661),geom) < 100;
Bom, ele retorna pra mim 28 estações que seriam os pontos mais próximos da lat e long: -49.2653819 -25.4244287, porem diminuindo o valor de 100 (que seria em metros) para 1, ele ainda me retorna as 28 estações.
O que estaria errado?
Se executo essa Sql também me retorna as 28 estações:
SELECT nome FROM estacao WHERE ST_distance(ST_transform(ST_PointFromText('POINT(-49.2653819 -25.4244287)', 4269),32661), geom) < 1;
Com a sql postada aqui no tópico, não retorna nada pra mim:
select * from estacao where ST_DWithin(ST_GeometryFromText('POINT(-49.2653819 -25.4244287)'), geom, 1000);
Aqui está um exemplo de como está algumas linhas da minha tabela:
id | latitude | longitude | nome | geom
182 | -25.4244287 | -49.2653819 | Estação tubo Aeroporto Afonso Pena | 0101000020957F00007332DC44E30169C188960590AA0165C1
183 | -25.4105796 | -49.2482570 | Estação tubo Agrárias | 0101000020957F00000029BE7406FE68C14FF4D0022E0265C1
Obrigado por enquanto