Presented by Vicky Vergara
pgRouting extends PostgreSQL/PostGIS
CREATE DATABASE routing;
\c routing
CREATE EXTENSION postgis;
CREATE EXTENSION pgrouting;
SELECT * FROM pgr_dijkstra('
SELECT gid as id,
source,
target,
length as cost
FROM ways',
30, 60, false);
seq | path_seq | node | edge | cost | agg_cost
----+----------+------+------+--------+----------
1 | 1 | 30 | 53 | 0.0591 | 0
2 | 2 | 44 | 52 | 0.0665 | 0.0591
3 | 3 | 14 | 15 | 0.0809 | 0.1256
4 | 4 | 13 | 14 | 0.0726 | 0.2065
5 | 5 | 12 | 13 | 0.0812 | 0.2791
6 | 6 | 11 | 12 | 0.0074 | 0.3603
7 | 7 | 10 | 6869 | 0.0164 | 0.3677
8 | 8 | 59 | 72 | 0.0109 | 0.3841
9 | 9 | 60 | -1 | 0 | 0.3950
(9 rows)
void existing_complicated_code() {
A // 100 lines of code
B // 500 lines of complicated code with an unsolved issue
C // 50 more lines of code
}
void new_complicated_code() {
D // 100 lines of code
// TODO copy/paste 500 lines of existing complicated code
E // 50 more lines of code
}
select * from pgr_foo(
'select id, source, target, cost, reverse_cost from edges', 3, 5,
false -- directed flag,
false -- has_rcost flag
);
select * from pgr_foo(
'select id, source, target, cost from edges', 3, 5,
false -- directed flag,
true -- has_rcost flag
);
source | target | cost | reverse_cost
-------+--------+------+------------
3 | 6 | 40 | 38
3 | 8 | 25 | -25
6 | 8 | -1 | 32
source | target | cost | reverse_cost
-------+--------+------+-------------
3 | 6 | 40 | 38
3 | 8 | 25 | -25
6 | 8 | -1 | 32
SELECT * FROM pgr_Dijkstra(
'SELECT id, source, target, cost, reverse_cost FROM edges',
3, -- start_vid
5, -- end_vid
false -- directed flag
);
SELECT * FROM pgr_Dijkstra(
'SELECT id, source, target, cost FROM edges',
3, 5,
false);
SELECT * FROM pgr_Dijkstra(
'SELECT id, source, target, cost, reverse_cost FROM edges',
3, 5,
true);
SELECT * FROM pgr_Dijkstra(
'SELECT id, source, target, cost FROM edges',
3, 5,
true);
SELECT * FROM pgr_Dijkstra(edges_sql,2,3);
seq | path_seq | node | edge | cost | agg_cost
-----+----------+------+------+------+---------
SELECT * FROM pgr_Dijkstra(edges_sql,ARRAY[2],3);
seq | path_seq | start_vid | node | edge | cost | agg_cost
-----+----------+-----------+------+------+------+---------
SELECT * FROM pgr_Dijkstra(edges_sql, 2,ARRAY[3]);
seq | path_seq | end_vid | node | edge | cost | agg_cost
-----+----------+---------+------+------+------+---------
SELECT * FROM pgr_Dijkstra(edges_sql,ARRAY[2],ARRAY[3]);
seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost
----+----------+-----------+---------+------+------+------+---------
Select * from pgr_Dijkstra(edges_sql,2,ARRAY[3,5]);
Select * from pgr_Dijkstra(edges_sql,7,ARRAY[3,5]);
Select * from pgr_Dijkstra(edges_sql,ARRAY[2,7],3);
Select * from pgr_Dijkstra(edges_sql,ARRAY[2,7],5);
Select * from pgr_Dijkstra(edges_sql,ARRAY[2,7],ARRAY[3,5]);