W mojej bazie danych PostGIS (PostGIS 1.5 na Postgres 8.4.1) mam dwie tabele: drogi (składające się z linii) i awarie (składające się z punktów). Próbowałem skorelować każdą awarię z drogą, ale mam problemy z uruchomieniem następujących elementów:
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;
Ta kolejka powinna zwrócić najbliższy punkt awarii z gid 360 na każdej drodze, ale funkcja ST_Intersects zwraca false dla pierwszego wyniku (prawdziwy najbliższy punkt na wszystkich drogach). czy robię coś źle? Czy istnieje inny sposób na połączenie awarii z najbliższą drogą?