PgRouting: problema di pgr_withpoints

Dec 08 2020

A seguito della mia altra domanda sull'integrazione del routing non di rete, ho provato le funzioni con punti utilizzando il codice proposto nella risposta.

Il problema è che non ottengo il percorso più breve utilizzando queste funzioni

Per chiarimenti, la polilinea rosa rappresenta il risultato With-points e quella verde rappresenta il risultato di Dijkstra

Modificato

Il codice che ho usato per calcolare il percorso 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 è la mia tabella edge, -888888 e -607 sono l'id del punto iniziale e finale

Risposte

1 JGH Dec 08 2020 at 21:11

Hai specificato a costma non a reverse_cost, quindi viene utilizzato il valore predefinito di -1, il che significa che il segmento viene ignorato.

Puoi provare con

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