2017-05-26 66 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

你有什麼要求選擇一箇中間點?你爲什麼需要這個中間點?你能計算完整的路線,然後將其細分爲多個部分?或者選擇一個剛剛超出限制的節點。這將增加路線的計算時間。 –