2011-10-14 23 views
3

我試圖讓一個.map文件在我的android應用程序中使用它。我的意思是藉助mapsforge庫在屏幕上顯示地圖。庫需要一個.map文件。問題是使用osmosis mapfilewriter插件生成它。當我使用命令使用mapfilewriter插件爲滲透創建.map文件

./osmosis --rx file=/home/user/poland.osm --mw file=result.map bbox=51.09,16.9,51.14,17 

我得到

SEVERE: Thread for task 1-rx failed 
java.lang.OutOfMemoryError: Java heap space 

我嘗試使用的論據另一種秩序,但它也不起作用。我也嘗試使用-Xmx1200m選項來增加javas堆內存,但使用內存是這樣的,並沒有幫助。

我將不勝感激。

回答

2

使用參數type=hd

type參數有兩個選項ramhd。雖然我沒有看到文檔沒有明確說明hd的含義,但我想它意味着「硬盤」,這意味着它將數據卸載到磁盤,而不是將它全部保存在內存中。

得到的命令是,那麼:

./osmosis --rx file=/home/user/poland.osm --mw file=result.map bbox=51.09,16.9,51.14,17 type=hd 
+1

確實。這將解決大圖的大部分內存問題 - 代價是放慢處理速度;根據我的經驗,基於磁盤的臨時存儲比基於內存的存儲大一些,因此請確保有足夠的可用空間。 – Piskvor

1

如果你有足夠的內存,你需要告訴Java的它(它只會使用數量有限的其他方式);但這不是直接傳遞給滲透的論據。

在Windows上,你可以按照this advice given by Emilie Laffray on the OSM-dev list

在osmosis.bat是以下行... REM#JAVACMD_OPTIONS - 的 選項追加到java命令,通常用來修改JVM 設置如最大內存。

所以,要麼修改osmosis.bat,或者創建一個名爲osmosis.bat中的所有用戶配置文件目錄 或您的配置文件目錄的新文件,以 包括「設置JAVACMD_OPTIONS = -Xmx1024M」線(設置最大 內存使用量爲1GB,如果你有足夠的RAM)...

在Linux(和我承擔的Mac OS X也有),可以創建文件~/.osmosis 包含線

JAVACMD_OPTIONS=-Xmx1024M 

將在啓動時通過滲透裝載。請注意,上述兩個示例均使用值1024M,即您正在向Java提供1024 MB的RAM - 您可以根據系統使用不同的值。