Trong cơ sở dữ liệu PostGIS của tôi (PostGIS 1.5 trên Postgres 8.4.1), tôi có hai bảng: đường (bao gồm các đường nối) và các sự cố (bao gồm các điểm). Tôi đã cố gắng tương quan mỗi vụ tai nạn với một con đường, nhưng tôi gặp vấn đề khi làm việc sau đây:
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;
Hàng đợi này sẽ trả về điểm gần nhất với sự cố với gid 360 trên mỗi đường, nhưng hàm ST_Intersects trả về sai cho kết quả đầu tiên (điểm gần nhất thực sự trên tất cả các đường). Tôi có làm điều gì sai? Có cách nào khác để liên kết vụ tai nạn với con đường gần nhất không?