我一直在測試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)
感謝您的支持! –
您正在使用哪種GraphHopper版本? – Karussell
我使用0.7版本。 –