Saturday, 9 September 2017

postgis - Getting multiple shortest paths with PgRouting in one query?


I want to run shortest path algorithm on multiple source&target pairs at once and get a result as a table and process it then.


How do I do this? This query does not work:


SELECT a.source, a.target, paths.* 
FROM all_to_all a, shortest_path_astar('...', a.source, a.target, false, false) paths;

ERROR: function expression in FROM cannot refer to other relations of same query level

(btw, all_to_all does not literally mean all to all, :) it's just a number of random pairs)



This does not work either:


SELECT * 
FROM all_to_all a, (
SELECT * FROM shortest_path_astar('...', a.source, a.target, false, false) yyy
) AS t2;

Answer



Something like


SELECT 
source,
target,

(SELECT SUM(cost) FROM -- or whatever you want to do with the routing result
(SELECT * FROM shortest_path_astar('...',
source,
target,
false,
false)
) AS foo
) AS cost
FROM all_to_all;

No comments:

Post a Comment

arcpy - Changing output name when exporting data driven pages to JPG?

Is there a way to save the output JPG, changing the output file name to the page name, instead of page number? I mean changing the script fo...