No meu banco de dados PostGIS (PostGIS 1.5 no Postgres 8.4.1), tenho duas tabelas: estradas (compostas por cadeias de linhas) e travamentos (compostos por pontos). Estou tentando correlacionar cada acidente a uma estrada, mas estou tendo problemas para que o seguinte funcione:
SELECT ST_ClosestPoint(road.the_geom, crash.the_geom),
ST_Intersects(ST_ClosestPoint(road.the_geom, crash.the_geom), road.the_geom)
ST_Distance(ST_ClosestPoint(road.the_geom, crash.the_geom), crash.the_geom) AS distance
FROM
--Table crashes is already in SRID 4326
(SELECT the_geom FROM crashes WHERE gid = 360) as crash,
(SELECT ST_SetSrid(the_geom, 4326) as the_geom from roads) as road
ORDER BY distance;
Essa fila deve retornar o ponto mais próximo do acidente com o gid 360 em cada estrada, mas a função ST_Intersects retorna false para o primeiro resultado (o verdadeiro ponto mais próximo de todas as estradas). Estou fazendo algo errado? Existe outra maneira de vincular o acidente à estrada mais próxima?