PgRouting: ปัญหา pgr_withpoints
Dec 08 2020
ตามคำถามอื่น ๆของฉันเกี่ยวกับการกำหนดเส้นทางที่ไม่รวมเครือข่ายฉันได้ลองใช้ฟังก์ชัน with-point โดยใช้รหัสที่เสนอในคำตอบ
ปัญหาคือฉันไม่ได้รับเส้นทางที่สั้นที่สุดโดยใช้ฟังก์ชันเหล่านี้
สำหรับการชี้แจงเส้นโพลีไลน์สีชมพูแสดงถึงผลลัพธ์ที่มีจุดและเส้นสีเขียวแสดงถึงผลลัพธ์ของดิจก์
แก้ไขแล้ว
รหัสที่ฉันใช้ในการคำนวณเส้นทาง with_points คือ
SELECT *
FROM pgr_withPoints(
'SELECT id, source, target, st_length(the_geom) as cost FROM vr',
'SELECT pnt.id AS pid,
edg.edge_id,
edg.fraction
FROM points_table AS pnt
CROSS JOIN LATERAL (
SELECT id AS edge_id,
ST_LineLocatePoint(the_geom, pnt.geom) AS fraction
FROM vr
ORDER BY
the_geom <-> pnt.geom
LIMIT 1
) AS edg',
-888888, -607,
details := TRUE
);
vr คือตารางขอบของฉัน -888888 และ -607 คือรหัสจุดเริ่มต้นและจุดสิ้นสุด
คำตอบ
1 JGH Dec 08 2020 at 21:11
คุณได้ระบุ a costแต่ไม่ใช่ a reverse_costดังนั้นจึงใช้ค่าเริ่มต้นของ-1ซึ่งหมายความว่ากลุ่มจะถูกละเว้น
คุณสามารถลองใช้
'SELECT id, source, target, st_length(the_geom) as cost, st_length(the_geom) as reverse_cost FROM vr',