PgRouting: problem z pgr_withpoints

Dec 08 2020

Po moim drugim pytaniu dotyczącym routingu nie integrującego sieci, wypróbowałem funkcje z punktami, używając kodu zaproponowanego w odpowiedzi.

Problem polega na tym, że nie dostaję najkrótszej ścieżki przy użyciu tych funkcji

Dla jasności różowa polilinia reprezentuje wynik punktów „Z”, a zielona przedstawia wynik Dijkstry

Edytowano

Kod, którego użyłem do obliczenia trasy with_points, to

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 to moja tabela krawędzi, -888888 i -607 to identyfikatory punktu początkowego i końcowego

Odpowiedzi

1 JGH Dec 08 2020 at 21:11

Została określona cost, ale nie jest reverse_cost, więc domyślna od -1służy, czyli segment jest ignorowany.

Możesz spróbować

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