PgRouting: problema di pgr_withpoints
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
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',