2017-05-26 62 views
0

我正面临一个子问题,我得到了我的城市的数据库(包括postgis,pgrouting)。
我需要建立从A点到B点的路径/路线。如果此路径长于xx公里,那么此路径必须访问给定“停止点”(让我们称之为C)之一。如果从C到B的路径长于xx公里,那么我们必须访问C和B之间的一个更多的中间“停止点”。pgrouting/postgis - 搜索中间点的算法

+0

在未来,请不要交叉张贴问题(https://gis.stackexchange.com/questions/241829/function-algorithm-to-find-intermediate-points-if -path-是太长)。有关更多信息,请参阅[这里](http://meta.stackexchange.com/q/64068)。 – Matt

回答

1

这听起来像一个像这样的伪代码循环,我会转换它到PLPGSQL存储过程:

A = start 
S = stop 
B = S 
while true { 
    r = getRoute(A, B) 
    if length(r) > limit then 
    B = selectIntermediatepoint(A, B) 
    else if B == S then 
    break 
    else 
    A = B 
    B = S 
} 
+0

谢谢,我有一些共同的想法,但重点是我不知道如何找到中间点(selectIntermediatepoint(A,B))。 – user3613919

+0

你有什么要求选择一个中间点?你为什么需要这个中间点?你能计算完整的路线,然后将其细分为多个部分?或者选择一个刚刚超出限制的节点。这将增加路线的计算时间。 –