Como trabalhar com shortest_path_shooting_star () no pgRouting?

8

Já faz algum tempo que estamos usando o PostGIS para armazenar nossas informações de geometria em nosso banco de dados Postgres. Desenvolvemos o roteamento de vértice para vértice usando a biblioteca iGraph. Ontem, li sobre o pgRouting e estou portando nosso aplicativo atual para o pgRouting. No entanto, enfrento alguns problemas ao usar o localizador de caminhos de início de filmagem.

Armazenamos informações de arestas e vértices em tabelas e, para encontrar uma rota de gráfico com restrição de turno, chamamos o seguinte script SQL:

SELECT  shortest_path_shooting_star(
    'SELECT e.id,
                e.first as source,
                e.second as target,
                ST_Length(e.geom) as cost, 
                st_x(st_pointn(e.geom, 1)) AS x1, st_y(st_pointn(e.geom, 1)) AS y1,
                st_x(st_pointn(e.geom, 2)) AS x2, st_y(st_pointn(e.geom, 2)) AS y2,
                (not connected)::boolean::int * 1000000 AS to_cost,
                c.first AS rule
        FROM edges e LEFT OUTER JOIN edge_connections c ON e.id = c.second
        WHERE e.group_id = 0
        ORDER BY e.id',
    1209560, 1209653, true, false);

Minha subconsulta interna terá os seguintes resultados:

  id    | source  | target  |   cost |  x1   |  y1   |  x2   |  y2   | to_cost |  rule  
--------+---------+---------+----+------------------+------------------+---------+---------
1087134 |  926686 |  926687| 2.3299 |51.4675|35.728 |51.4675|35.7280|         |    
1209706 | 1039731 | 1039870 | 4.005 |51.4082|35.7239|51.4082|35.7239| 1000000 | 1209564
...

Nos resultados, quando existe uma restrição, regra e to_cost não seriam NULL. Quando existe uma restrição de turno, os resultados serão exatamente iguais aos especificados nos documentos .

No entanto, quando eu chamo a shortest_path_shooting_starfunção, os resultados não diferem se a rule- e - to_costexistir ou não. Mudei de direção e has_reverse_costparâmetros, mas nada aconteceu.

Fiquei me perguntando se vocês poderiam me ajudar nesse assunto. Qualquer conselho ou mesmo uma pista seria muito apreciada.

mgri
fonte

Respostas:

1

Você parece não ter a coluna "reverse_cost" em sua subconsulta.

Dos documentos :

reverse_cost (opcional): o custo da travessia inversa da aresta. Isso é usado apenas quando os parâmetros direcionado e has_reverse_cost são verdadeiros (consulte a observação acima sobre custos negativos).

underdark
fonte