使用R中的栅格对大型ArcGIS网格文件进行分层

时间:2016-04-14 20:43:14

标签: r raster r-raster

我正在尝试提取类似于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

1 个答案:

答案 0 :(得分:0)

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

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