【发布时间】:2021-05-28 11:56:55
【问题描述】:
首先,我只想声明,我对 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 对。
那么有没有办法让我只对指定的对而不是对所有可能的组合进行计算?
【问题讨论】:
-
是的,这是可能的。例如,您可以在 select 语句中添加“where”子句来限制源和目标的数量。
-
我尝试做一个 where 子句,但我只有基本的 SQL 知识。我尝试做类似的事情:
array(select source FROM living where living = work.target), array(select target FROM work where work = living.source),
标签: postgresql postgis dijkstra pgrouting od