Nel mio database PostGIS (PostGIS 1.5 su Postgres 8.4.1), ho due tabelle: strade (composte da linee) e incidenti (composte da punti). Ho cercato di correlare ogni incidente a una strada, ma ho problemi a far funzionare quanto segue:
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;
Questo caso dovrebbe restituire il punto più vicino allo schianto con gid 360 su ogni strada, ma la funzione ST_Intersects restituisce false per il primo risultato (il vero punto più vicino su tutte le strade). Sto facendo qualcosa di sbagliato? C'è un altro modo per collegare l'incidente alla strada più vicina?