PgRouting: masalah pgr_withpoints

Dec 08 2020

Mengikuti Pertanyaan Saya yang Lain tentang perutean pengintegrasian non-jaringan, saya telah mencoba fungsi dengan-poin menggunakan kode yang diusulkan dalam jawaban.

Masalahnya adalah saya tidak mendapatkan jalur terpendek menggunakan fungsi ini

Untuk klarifikasi, polyline merah muda mewakili hasil With-poin dan yang hijau mewakili hasil Dijkstra

Diedit

Kode yang saya gunakan untuk menghitung rute with_points adalah

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 adalah tabel tepi saya, -888888 dan -607 adalah id titik awal dan akhir

Jawaban

1 JGH Dec 08 2020 at 21:11

Anda telah ditentukan costtapi bukan reverse_cost, jadi bawaan dari -1digunakan, berarti segmen tersebut diabaikan.

Anda bisa mencoba dengan

'SELECT id, source, target, st_length(the_geom) as cost, st_length(the_geom) as reverse_cost FROM vr',