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',