PgRouting: Problem mit pgr_withpoints

Dec 08 2020

Nach meiner anderen Frage zum Routing ohne Netzwerkintegration habe ich die With-Points-Funktionen unter Verwendung des in der Antwort vorgeschlagenen Codes ausprobiert.

Das Problem ist, dass ich mit diesen Funktionen nicht den kürzesten Weg bekomme

Zur Verdeutlichung steht die rosa Polylinie für das With-Points-Ergebnis und die grüne für das Dijkstra-Ergebnis

Bearbeitet

Der Code, den ich zur Berechnung der with_points-Route verwendet habe, lautet

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 ist meine Kantentabelle, -888888 und -607 sind Start- und Endpunkt-ID

Antworten

1 JGH Dec 08 2020 at 21:11

Sie haben ein, costaber kein a angegeben reverse_cost, daher wird der Standardwert von -1verwendet, was bedeutet, dass das Segment ignoriert wird.

Sie können mit versuchen

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