PgRouting: problema de pgr_withpoints

Dec 08 2020

Seguindo minha outra pergunta sobre roteamento de integração sem rede, tentei as funções com pontos usando o código proposto na resposta.

O problema é que não consigo o caminho mais curto usando essas funções

Para esclarecimento, a polilinha rosa representa o resultado com pontos e a verde representa o resultado de Dijkstra

Editado

O código que usei para calcular a rota 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 é minha tabela de borda, -888888 e -607 são id de ponto inicial e final

Respostas

1 JGH Dec 08 2020 at 21:11

Você especificou um, costmas não um reverse_cost, então o padrão de -1é usado, significando que o segmento é ignorado.

Você pode tentar com

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