PgRouting:pgr_withpointsの問題

Dec 08 2020

非ネットワーク統合ルーティングに関するその他の質問に続いて、回答で提案されたコードを使用してwith-points関数を試しました。

問題は、これらの関数を使用して最短パスを取得できないことです

明確にするために、ピンクのポリラインはウィズポイントの結果を表し、緑のポリラインはダイクストラの結果を表します

編集済み

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は開始点と終了点のIDです

回答

1 JGH Dec 08 2020 at 21:11

を指定しましたcostが、を指定しなかったreverse_costため、デフォルトの-1が使用されます。これは、セグメントが無視されることを意味します。

あなたはで試すことができます

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