PgRouting: problema pgr_withpoints

Dec 08 2020

Siguiendo mi Otra pregunta sobre el enrutamiento de integración sin red, probé las funciones con puntos utilizando el código propuesto en la respuesta.

El problema es que no obtengo la ruta más corta usando estas funciones

Para aclarar, la polilínea rosa representa el resultado con puntos y la verde representa el resultado de Dijkstra.

Editado

El código que utilicé para calcular la ruta with_points es

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 es mi tabla de borde, -888888 y -607 son id de punto de inicio y final

Respuestas

1 JGH Dec 08 2020 at 21:11

Ha especificado una cost, pero no una reverse_cost, por lo que el defecto de -1se ignora se utiliza, es decir, el segmento.

Puedes probar con

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