In meiner PostGIS-Datenbank (PostGIS 1.5 auf Postgres 8.4.1) habe ich zwei Tabellen: Straßen (bestehend aus Linestrings) und Abstürze (zusammengesetzt aus Punkten). Ich habe versucht, jeden Unfall mit einer Straße in Beziehung zu setzen, aber ich habe Probleme, Folgendes zum Laufen zu bringen:
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;
Diese Warteschlange sollte den nächstgelegenen Punkt zum Absturz mit gid 360 auf jeder Straße zurückgeben, aber die ST_Intersects-Funktion gibt für das erste Ergebnis false zurück (der wahre nächstgelegene Punkt über alle Straßen). Mache ich etwas falsch? Gibt es eine andere Möglichkeit, den Absturz mit der nächsten Straße zu verbinden?