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 - идентификаторы начальной и конечной точки

Ответы

1 JGH Dec 08 2020 at 21:11

Вы указали a, costно не a reverse_cost, поэтому используется значение по умолчанию-1 , что означает, что сегмент игнорируется.

Вы можете попробовать

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