【问题标题】:Deratifying a large ArcGIS grid file using raster in R在 R 中使用栅格取消大型 ArcGIS 网格文件
【发布时间】:2016-04-14 20:43:14
【问题描述】:

我正在尝试提取类似于this forestry map 的大型 ArcGIS 网格文件的各种属性

即使使用文件的较小裁剪版本,操作也会很慢,但更重要的是需要许多 GB 的临时文件,最终会耗尽我的硬盘驱动器,导致操作失败。我在这个驱动器上有大约 35 GB 的可用空间。

foo <- raster("grid/w001001.adf")
allLayers <- deratify(foo)

可以使用上述文件的裁剪版本来提取单个属性图层,但是当裁剪的 ArcGIS 网格文件目录只有 ~160MB 时,这仍然需要一个多 GB 的临时文件。在函数中指定文件名似乎并没有增加使用的硬盘空间量。

allLayers <- deratify(fooCropped, att="BA_GE_3")

我想提取几个图层,然后使用这些属性进行逐像素计算。是否可以将属性表提取为数据框,对其进行计算并将其与栅格重新关联?

系统信息:

> R.Version()
$platform
[1] "x86_64-apple-darwin15.3.0"
$arch
[1] "x86_64"
$os
[1] "darwin15.3.0"
$system
[1] "x86_64, darwin15.3.0"
...

‘raster’ version 2.5-2 
R version 3.2.4

【问题讨论】:

  • 一个类似结构的较小文件将不胜感激。那是 900+ MB,而 Forest Service 的服务器很慢。
  • 我自己没有测试过,但是这个文件lemma.forestry.oregonstate.edu/data/species-maps被描述为相同的格式。大小显然是我遇到的问题的一部分,因此将此链接发布到上述文件。
  • deratify 将为每个属性创建一个层。有多少属性?
  • 有180层;但是,我在尝试取消单个属性时遇到了磁盘空间问题,这是否会在后台为每个属性创建一个图层?
  • 我尝试在 Windows R 上使用 more manageable ArcGIS grid 重现此内容。我将 ProcMon 附加到 rsession.exe,但没有看到 Rsession.exe 创建的任何临时文件。临时文件是由 R、光栅还是 OSX 创建的?

标签: r raster r-raster


【解决方案1】:

我对流温度数据进行计算,这些数据通常有数百万条记录。每当我遇到内存问题时,我都会将 gc() 和 rm() 函数合并到我正在处理数据的循环中。您可以考虑在循环中使用这些函数来处理裁剪文件,以便 rm() 从 R 环境中删除您不需要的对象,并且 gc() 将内存返回给您的系统。

如果您有一个多核系统,您可以将其工作在一个循环中以批处理所有裁剪的文件,并在每个节点完成循环 deratify() 调用后进行清理。如果没有更多代码,很难建议您将如何实现。

【讨论】:

  • 感谢您的回答,我目前没有使用任何循环。提供的示例实际上是我尝试运行的所有代码。该空间不是rm()gc() 可以提供帮助的RAM,而是raster 包制作的临时文件的大小
猜你喜欢
  • 2015-09-13
  • 1970-01-01
  • 2016-04-21
  • 2020-02-28
  • 2013-02-16
  • 1970-01-01
  • 1970-01-01
  • 2019-10-07
  • 2020-07-19
相关资源
最近更新 更多