У своїй базі даних 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 повертає помилковий перший результат (справжня найближча точка по всіх дорогах). Я щось роблю не так? Чи є інший спосіб пов’язати аварію з найближчою дорогою?