2016-07-22 88 views
0

上下文
我目前正在研究涉及osm數據(打開街道地圖)的項目。爲了操作地理對象,我必須將數據(osm xml文件)轉換爲對象。 osmar包允許我這樣做,但它無法解析原始xml數據。使用XML包解析R中非常大的(10 GB)XML文件時出錯

錯誤

錯誤膏(文件,崩= 「\ n」):結果將超過2^31-1字節

代碼

require(osmar) 
osmar_obj <- get_osm("anything", source = osmsource_file("my filename")) 

在get_osm函數中,代碼調用ret <- xmlParse(raw),觸發器幾秒鐘後的錯誤。

問題
我怎麼看大的XML文件(這裏10GB),知道我有64G的內存?

非常感謝!

+0

˚F或那些想知道的,我檢查了R運行的版本,它是一個** 64位**。我還更新了XML包。 – VeilleData

+0

更多細節!在xmlParse函數中,錯誤發生在第12行:'file = paste(raw,collapse =「\ n」)''。那麼,這幾乎是錯誤所說的。 – VeilleData

+0

請使用完整的代碼塊編輯您的文章,而不是在這裏和那裏的代碼段。 – Parfait

回答

0

這是我提出的解決方案,即使它不是100%滿意。

  1. 象以前那樣通過在shell
  2. 運行完全相同的代碼刪除每個換行符(但最後),跳過,不再需要粘貼改造.osm文件(因爲你只是做等值殼)

利潤:)

很顯然,我不是很滿意,因爲在外殼修改數據文件更多的是一種伎倆,實際的解決方案:(