Dans ma base de données PostGIS (PostGIS 1.5 sur Postgres 8.4.1), j'ai deux tableaux: les routes (composées de chaînes de lignes) et les accidents (composés de points). J'ai essayé de corréler chaque accident à une route, mais j'ai du mal à faire fonctionner les éléments suivants:
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;
Cette requête doit renvoyer le point le plus proche de l'accident avec gid 360 sur chaque route, mais la fonction ST_Intersects renvoie false pour le premier résultat (le vrai point le plus proche sur toutes les routes). Est-ce que je fais quelque chose de mal? Existe-t-il un autre moyen de relier l'accident à la route la plus proche?