pgr_lineGraph - Experimental - pgRouting Manual (3.2)
pgr_lineGraph - Experimental
pgr_lineGraph
- Transforms a given graph into its corresponding edge-based graph.
Warning
Possible server crash
-
These functions might create a server crash
Warning
Experimental functions
-
They are not officially of the current release.
-
They likely will not be officially be part of the next release:
-
The functions might not make use of ANY-INTEGER and ANY-NUMERICAL
-
Name might change.
-
Signature might change.
-
Functionality might change.
-
pgTap tests might be missing.
-
Might need c/c++ coding.
-
May lack documentation.
-
Documentation if any might need to be rewritten.
-
Documentation examples might need to be automatically generated.
-
Might need a lot of feedback from the comunity.
-
Might depend on a proposed function of pgRouting
-
Might depend on a deprecated function of pgRouting
-
Availability
-
Version 2.5.0
-
New Experimental function
-
Description
Given a graph G, its line graph L(G) is a graph such that:
-
Each vertex of L(G) represents an edge of G
-
Two vertices of L(G) are adjacent if and only if their corresponding edges share a common endpoint in G.
Signatures
Summary
pgr_lineGraph(edges_sql, directed)
RETURNS SET OF (seq, source, target, cost, reverse_cost)
OR EMPTY SET
Using defaults
pgr_lineGraph(edges_sql)
RETURNS SET OF (seq, source, target, cost, reverse_cost) OR EMPTY SET
- Example :
-
For a directed graph
SELECT * FROM pgr_lineGraph(
'SELECT id, source, target, cost, reverse_cost FROM edge_table'
);
seq source target cost reverse_cost
-----+--------+--------+------+--------------
1 -18 18 1 1
2 -17 17 1 1
3 -16 -3 1 -1
4 -16 16 1 1
5 -15 -9 1 1
6 -15 15 1 1
7 -14 -10 1 1
8 -14 12 1 -1
9 -14 14 1 1
10 -10 -7 1 1
11 -10 -4 1 1
12 -10 8 1 1
13 -10 10 1 1
14 -9 -8 1 1
15 -9 9 1 1
16 -9 11 1 -1
17 -8 -7 1 1
18 -8 -4 1 1
19 -8 8 1 1
20 -7 -6 1 1
21 -6 6 1 1
22 -4 -1 1 1
23 -4 4 1 1
24 -3 -2 1 -1
25 -3 5 1 -1
26 -2 -1 1 -1
27 -2 4 1 -1
28 -1 1 1 1
29 5 -8 1 -1
30 5 9 1 -1
31 5 11 1 -1
32 7 -7 1 1
33 7 -4 1 1
34 8 11 1 -1
35 10 12 1 -1
36 11 13 1 -1
37 12 13 1 -1
38 13 -15 1 -1
39 16 -9 1 1
40 16 15 1 1
(40 rows)
Complete Signature
pgr_lineGraph(edges_sql, directed);
RETURNS SET OF (seq, source, target, cost, reverse_cost) OR EMPTY SET
- Example :
-
For an undirected graph
SELECT * FROM pgr_lineGraph(
'SELECT id, source, target, cost, reverse_cost FROM edge_table',
FALSE
);
seq source target cost reverse_cost
-----+--------+--------+------+--------------
1 -3 -2 1 -1
2 -3 5 1 -1
3 -2 4 1 -1
4 1 4 1 -1
5 4 8 1 -1
6 4 10 1 -1
7 5 9 1 -1
8 5 11 1 -1
9 6 7 1 -1
10 7 8 1 -1
11 7 10 1 -1
12 8 9 1 -1
13 8 11 1 -1
14 9 15 1 -1
15 10 12 1 -1
16 10 14 1 -1
17 11 13 1 -1
18 12 13 1 -1
19 16 15 1 -1
(19 rows)
Parameters
Column |
Type |
Description |
---|---|---|
edges_sql |
|
SQL query as described above. |
directed |
|
|
Inner query
Column |
Type |
Default |
Description |
---|---|---|---|
id |
|
Identifier of the edge. |
|
source |
|
Identifier of the first end point vertex of the edge. |
|
target |
|
Identifier of the second end point vertex of the edge. |
|
cost |
|
Weight of the edge (source, target)
|
|
reverse_cost |
|
-1 |
Weight of the edge (target, source) ,
|
Where:
- ANY-INTEGER :
-
SMALLINT, INTEGER, BIGINT
- ANY-NUMERICAL :
-
SMALLINT, INTEGER, BIGINT, REAL, FLOAT
Result Columns
RETURNS SETOF (seq, source, target, cost, reverse_cost)
Column |
Type |
Description |
---|---|---|
seq |
|
Sequential value starting from 1 . |
source |
|
Identifier of the source vertex of the current edge id .
|
target |
|
Identifier of the target vertex of the current edge id .
|
cost |
|
Weight of the edge ( source , target ).
|
reverse_cost |
|
Weight of the edge ( target , source ).
|
See Also
-
The queries use the Sample Data network.
Indices and tables