【问题标题】:Error while parsing a very large (10 GB) XML file in R, using the XML package使用 XML 包在 R 中解析非常大(10 GB)的 XML 文件时出错
【发布时间】:2016-11-26 08:44:34
【问题描述】:

上下文
我目前正在从事一个涉及 osm 数据(开放街道地图)的项目。为了操作地理对象,我必须将数据(osm xml 文件)转换为对象。 osmar 包允许我这样做,但它无法解析原始 xml 数据。

错误

粘贴错误(file, collapse = "\n") : 结果将超过 2^31-1 个字节

代码

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

在get_osm函数内部,代码调用ret &lt;- xmlParse(raw),几秒后触发错误。

问题
知道我有 64G 的内存,我应该如何读取一个大的 XML 文件(这里是 10GB)?

非常感谢!

【问题讨论】:

  • 对于那些想知道的人,我检查了 R 的运行版本,它是一个 64bit 版本。我还更新了 XML 包。
  • 更多细节!在 xmlParse 函数中,错误出现在第 12 行:file = paste(raw, collapse = "\n")。好吧,这就是错误所说的内容。
  • 请用完整的代码块编辑您的帖子,而不是在这里和那里的行数。

标签: r xml parsing openstreetmap large-files


【解决方案1】:

这是我想出的解决方案,尽管它不是 100% 令人满意。

  1. 通过删除 shell 中的每个换行符(但最后一个)来转换 .osm 文件
  2. 运行与以前完全相同的代码,跳过不再需要的粘贴(因为您刚刚在 shell 中执行了等效操作)

利润:)

显然,我对此不太满意,因为在 shell 中修改数据文件更像是一个技巧,而不是实际的解决方案:(

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-26
    • 1970-01-01
    • 2013-02-28
    • 2012-06-01
    • 2014-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多