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_star
función, los resultados no diferirían si existe rule
-y- to_cost
o no. He cambiado las instrucciones y los has_reverse_cost
pará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.