ในฐานข้อมูล PostGIS ของฉัน (PostGIS 1.5 บน Postgres 8.4.1) ฉันมีตารางสองตาราง: ถนน (ประกอบด้วย linestrings) และข้อขัดข้อง (ประกอบด้วยคะแนน) ฉันพยายามเชื่อมโยงการชนกันของแต่ละครั้งกับถนน แต่ฉันมีปัญหาในการทำงานต่อไปนี้:
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;
Queury นี้ควรส่งคืนจุดที่ใกล้ที่สุดไปยังการชนด้วย gid 360 บนถนนแต่ละเส้น แต่ฟังก์ชัน ST_Intersects จะคืนค่าเท็จสำหรับผลลัพธ์แรก (จุดที่ใกล้เคียงจริงมากกว่าถนนทุกสาย) ฉันกำลังทำอะไรผิดหรือเปล่า? มีวิธีเชื่อมโยงการชนกับถนนที่ใกล้ที่สุดหรือไม่