2015-05-04 47 views
0

我試圖按照文檔(https://github.com/graphhopper/graphhopper/blob/master/docs/core/weighting.md)中描述的示例在我的graphhopper路由中封鎖邊緣。 我試圖找到這不得不封閉graphhopper路由中的塊節點/邊緣 - 錯誤的邊緣被阻止

EdgeIteratorState edge = hopper.getLocationIndex().findClosest(lat, lon, EdgeFilter.ALL_EDGES).getClosestEdge(); 
運行我的應用程序時

但得到的邊緣,它顯示了一些完全不同的邊緣被封鎖,沒有我試圖阻止的。 我做錯了什麼,你有什麼提示嗎?自從四天以來,我就陷入了這個問題,沒有任何想法。

+0

沒有任何進一步的信息很難猜測。 lat,lon是否按正確的順序? getClosestEdge.getEdge實際上有一些正值嗎?阻塞權重是否被正確選取並且實際上包含找到的邊緣ID? – Karussell

+0

有一個類似的例子。也許你之前嘗試過? https://github.com/karussell/graphhopper-traffic-data-integration/ – Karussell

+0

感謝您的快速回復!是的,lat/long的順序是正確的。爲了更具體一些: ,同時通過我的BlockingWeighting類的CalcWeight-Method調試時,它爲我提供了以下計算路徑的邊緣: 28 [22-> 1,22-> 16], 30 [22 - > 1。 22-> 16], 20 20 13-6, 19 19 6-5, 12 [1-22,17] 1-20,12-2], 和禁止邊是0.9和10. 請看看![附圖](http://www.c-it.at/Screenshot_2015-05-05-08-32-47.jpg)。 - 計算出的路線以藍色繪製。 我正在使用離線地圖進行室內路由 - 也許我在創建地圖時做了錯誤的事情? –

回答

0

不知道的是,如果這是優雅的,但我想我找到了一個解決辦法:在 我加

prepare.chWeighting=no 

的graphhopper.sh的config.properties,並在加載圖形,我設置

tmpHopp.setCHEnable(false); 

要事後塊中的邊緣,我簡單地設置速度這個邊緣到0

FlagEncoder footEncoder = TempAppData.getInstance().getHopper().getEncodingManager().getEncoder("foot"); 
       edge.setFlags(footEncoder.setSpeed(edge.getFlags(), 0)); 
+1

不建議將速度設置爲0。而是使用訪問屬性。 footEncoder.setAccess。另外,如果您在應用程序中創建漏斗,則無需使用Java API更改配置,只需一個就可以。我還更新了權重文檔,以避免將來對chWeighting產生誤解。 – Karussell

+0

完美,就是這樣!非常感謝你! –