R 栅格乘法 - 为什么栅格大小大幅增加

标签 r raster

我正在 R(栅格包)中使用 MODIS 栅格数据,我想知道为什么当两个栅格文件相乘时栅格的大小会变大 7000 倍。就我而言,一个栅格是简单的 MODIS 栅格(值在 0 到 255(整数)之间),另一个栅格是一种模板(0 和 1(整数))。所以我不明白为什么光栅要这么大?当尝试使用 writeRaster 保存栅格时,这是一个大问题,因为我的 R session 不断崩溃。

我的代码如下所示:

a <- list.files('All_MODIS_files_of_one_year.tif')
for (day in 1:length(a)){
ra <- raster(a[day])
ra_reduce <- ra * s

ra 的对象大小为 12064 字节,s 的对象大小为 11984 字节。 ra_reduce 的对象大小为 93777512 字节。当我最终堆叠一整年时,文件几乎变成了 40 GB 大。 :(

我尝试了round函数,尝试将@file@datanotation设置为整数,但没有任何帮助。 有谁知道如何解决这个问题?

最佳答案

ra(可能还有s)的对象大小非常小,因为它在内存中没有单元值。如果您show(ra),您将看到数据位于磁盘上(在文件中)。相乘后的值将存储在内存中。您可以使用 calcoverlay 等允许将结果写入文件的方法或使用 writeRaster 来避免这种情况。即:

x <- overlay(ra, s, fun=function(x,y){x*y}, filename='file.tif')

或者

ra_reduce <- ra * s
ra_reduce <- writeRaster(ra_reduce, filename='ra_reduce.tif')

要减小文件大小,您(或许)可以使用datatype 参数。

关于R 栅格乘法 - 为什么栅格大小大幅增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50881957/

相关文章:

r - 使用多色标的 ggplot2 映射栅格数据

r - 在 glm-output 中进行调用 getOption ("width")

r - 使用 `browser()` 时如何从命令行使用 R 的 `Rscript` 函数

r - 如何合并和求和两个数据帧

open-source - 区域统计 QGIS

r - R中不同绘图具有相同色标的色带

r - 如何在用png()保存时固定R中ggplot的大小?

从图例中删除 ggplot2 的 geom_point 图标

r - 在 R 中的 foreach 循环中使用栅格堆栈和 doParallel

r - 合并两个邻国的SpatialPolygonsDataFrame