PgRouting: problème pgr_withpoints

Dec 08 2020

Suite à mon Autre question sur le routage intégrant non réseau, j'ai essayé les fonctions avec points en utilisant le code proposé dans la réponse.

Le problème est que je n'obtiens pas le chemin le plus court en utilisant ces fonctions

Pour plus de précision, la polyligne rose représente le résultat With-points et la verte représente le résultat de Dijkstra

Édité

Le code que j'ai utilisé pour calculer l'itinéraire with_points est

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 est ma table de bord, -888888 et -607 sont les id de point de départ et d'arrivée

Réponses

1 JGH Dec 08 2020 at 21:11

Vous avez spécifié un , costmais pas reverse_cost, de sorte que le défaut de -1est utilisé, ce qui signifie le segment est ignoré.

Vous pouvez essayer avec

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