[英]How do I calculate shortest path between Origin - Destination pairs using pgRouting?
首先,我只想 state,我對 GIS 很陌生,而且我可能對術語還不太了解,所以請耐心等待。
我現在正在實習,並負責進行自行車通勤潛力分析。 我使用的數據是道路圖層(我已經創建了一個使用 pgr_createTopology 的拓撲)和兩個點圖層,用於從 500x500m 正方形的質心創建個人生活和工作的地方。
我已經設法使用 pgr_dijkstraCost 在我的兩個點層之間進行某種計算,如下所示:
SELECT *
FROM pgr_dijkstraCost(
'SELECT gid AS id,
source,
target,
extlen / 1.3 / 60 AS cost
FROM roads',
array(select source FROM living),
array(select target FROM work),
directed := false);
生活和工作測試表中的源和目標值的值從 1 到 50,因為我最初雖然可以通過計算源和目標何時具有相同的值來進行計算。 我現在知道這是不可能的,因為 pgr_dijkstra 在它們相同時不允許計算。 我現在得到的結果是針對我不想要的每個組合。 最終計算將針對大約 300 000 對。
那么有沒有辦法讓我只對指定的對而不是對每個可能的組合進行計算?
從版本 3.1 開始有這個簽名
pgr_dijkstra(Edges SQL, Combinations SQL, end_vids, [, directed])
RETURNS SET OF (seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)
OR EMPTY SET
示例用法(取自 pgRouting 文檔)
CREATE TABLE combinations_table (
source BIGINT,
target BIGINT
);
INSERT INTO combinations_table (source, target)
VALUES (1, 2), (1, 4), (2, 1), (2, 4), (2, 17);
SELECT * FROM pgr_dijkstra(
'SELECT id, source, target, cost, reverse_cost FROM edge_table',
'SELECT * FROM combinations_table',
FALSE
);
seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost
----+----------+-----------+---------+------+------+------+----------
1 | 1 | 1 | 2 | 1 | 1 | 1 | 0
2 | 2 | 1 | 2 | 2 | -1 | 0 | 1
3 | 1 | 1 | 4 | 1 | 1 | 1 | 0
4 | 2 | 1 | 4 | 2 | 2 | 1 | 1
5 | 3 | 1 | 4 | 3 | 3 | 1 | 2
6 | 4 | 1 | 4 | 4 | -1 | 0 | 3
7 | 1 | 2 | 1 | 2 | 1 | 1 | 0
8 | 2 | 2 | 1 | 1 | -1 | 0 | 1
9 | 1 | 2 | 4 | 2 | 2 | 1 | 0
10 | 2 | 2 | 4 | 3 | 3 | 1 | 1
11 | 3 | 2 | 4 | 4 | -1 | 0 | 2
(11 rows)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.