2016-10-01 78 views
1

我一直在測試graphhopper在Android上的不同設備上幾個星期。今天,我在執行GraphHopper加載(...)函數期間遇到OutOfMemory錯誤。這發生在小米Mi4手機上。圖表以最快和最短的權重輸出用於汽車,自行車和腳。所有圖形文件超過1,17GB。Graphhopper。我是否可以加載部分圖形文件以避免OutOfMemory錯誤?

我嘗試這樣做:爲了節省內存,我刪除了特定於其他車比汽車中的所有文件:nodes_ch_fastest_bike,shortcuts_fastest_bike,shortcuts_fastest_foot等

和修改2號線在屬性文件:

我刪除標記的編碼器比其他汽車:汽車比其他

graph.flag_encoders=car|speed_factor=5.0|speed_bits=5|turn_costs=false|version=1 

和刪除權重

graph.ch.weightings=[fastest|car, shortest|car] 

現在正確加載:-)

的問題是,我可以安全地修改屬性文件,這種方式(可能刪除文件是不必要的?)來加載由用戶只選擇車輛數據(如果應用程序在運行時用戶改變車輛,關閉圖形然後修改屬性文件以設置適當的編碼器和權重,並再次加載圖形)。

我已經注意到了,那剩下的文件除了,那就是:節點,邊,幾何,location_index的圖形支持所有車輛(汽車,自行車,徒步)準備的大小與繪製準備文件有所不同只爲汽車。我想這與編碼有關。雖然它似乎正常工作,但我不知道確切的圖形結構,我想避免任何不一致。

感謝

更新: 我測試和計算自行車和汽車的車輛(包括最短,最快的權重)的路線時,這種解決方法適用於汽車,但沒有有時。例外:

了java.lang.RuntimeException:在執行doInBackground() 在android.os.AsyncTask $ 3.done(AsyncTask.java:309) 在java.util.concurrent.FutureTask中出現錯誤。 finish.Complete(FutureTask.java:354) at java.util.concurrent.FutureTask.setException(FutureTask.java:223) at java.util.concurrent.FutureTask.run(FutureTask.java:242) at android.os。 AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:234) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:588 ) 在java.lang.Thread.run(Thread.java:818) 所致:java.lang.IllegalStateException:計算時間不應該要求從在錯誤的方向上邊緣的讀取速度。反向:true,fwd:false,bwd:false at com.graphhopper.routing.Path.calcMillis(Path.java:253) at com.graphhopper.routing.ch.Path4CH.expandEdge(Path4CH.java:56) 在com.graphhopper.routing.ch.Path4CH.expandEdge(Path4CH.java:96) 在com.graphhopper.routing.ch.Path4CH.expandEdge(Path4CH.java:96) 在com.graphhopper.routing.ch.Path4CH .expandEdge(Path4CH.java:103) 在com.graphhopper.routing.ch.Path4CH.expandEdge(Path4CH.java:96) 在com.graphhopper.routing.ch.Path4CH。在com.graphhopper.routing.ch.Path4CH.expandEdge(Path4CH.java:96) at com.graphhopper.routing.ch.Path4CH.expandEdge(Path4CH.java:103) at com.graphhopper.routing.ch.Path4CH.processEdge(Path4CH.java:46) 在com.graphhopper.routing.PathBidirRef.extract(PathBidirRef.java:92) 在com.graphhopper.routing.DijkstraBidirectionRef.extractPath(DijkstraBidirectionRef。 java:130) at com.graphhopper.routing.AbstractBidirAlgo.calcPath(AbstractBidirAlgo.java:64) at com.graphhopper.routing.AbstractRoutingAlgorithm.calcPaths(AbstractRoutingAlgorithm.java:120) at com.graphhopper.routing.template。 ViaRoutingTemplate.calcPaths(ViaRoutingTemplate.java:110) at com.graphhopper.G raphHopper.calcPaths(GraphHopper.java:1098) 在com.graphhopper.GraphHopper.route(GraphHopper.java:1003)

回答

1

這應該是可能沒有問題,但目前還沒有現成的,只用你所描述的破解或調整源代碼。正如我在創建之前所要求和詢問的那樣,this new issue

+0

感謝您的支持! –

+0

您正在使用哪種GraphHopper版本? – Karussell

+0

我使用0.7版本。 –

相關問題