¿Cómo trabajar con shortest_path_shooting_star () en pgRouting?


8

Ha pasado un tiempo que estamos usando PostGIS para almacenar nuestra información de Geometría en nuestra base de datos Postgres. Hemos desarrollado enrutamiento de vértice a vértice nosotros mismos usando la biblioteca iGraph. Ayer leí sobre pgRouting y estoy portando nuestra aplicación actual a pgRouting. Sin embargo, enfrento algunos problemas al usar el buscador de ruta de inicio de disparo.

Almacenamos información de bordes y vértices en tablas y para encontrar una ruta de gráfico con restricción de giro, llamamos al siguiente 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);

Mi subqery interno tendría los siguientes 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
...

En los resultados, cuando existe una restricción, la regla y to_cost no serían NULL. Cuando existe una restricción de giro, los resultados serían exactamente como los especificados en los documentos .

Sin embargo, cuando llamo a la shortest_path_shooting_starfunción, los resultados no diferirían si existe rule-y- to_costo no. He cambiado las instrucciones y los has_reverse_costparámetros, pero no pasó nada.

Me preguntaba si ustedes podrían ayudarme en este asunto. Cualquier consejo o incluso una pista sería muy apreciada.

Respuestas:


1

Parece que le falta la columna "reverse_cost" en su subconsulta.

De documentos :

reverse_cost (opcional): el costo por el recorrido inverso del borde. Esto solo se usa cuando los parámetros dirigido y has_reverse_cost son verdaderos (vea el comentario anterior sobre costos negativos).

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.