В моей базе данных PostGIS (PostGIS 1.5 на Postgres 8.4.1) у меня есть две таблицы: дороги (составленные из линейных линий) и аварии (составленные из точек). Я пытался соотнести каждую аварию с дорогой, но у меня проблемы с получением следующего:
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;
Эта очередь должна возвращать ближайшую точку аварии с gid 360 на каждой дороге, но функция ST_Intersects возвращает false для первого результата (истинная ближайшая точка для всех дорог). Я делаю что-то неправильно? Есть ли другой способ связать аварию с ближайшей дорогой?