writeRaster到.img文件大小比源文件大

时间:2018-03-16 15:45:48

标签: r raster filesize

我正在尝试拍摄多个光栅文件,将它们一起添加,然后将生成的光栅文件写入磁盘。但是,我注意到每次我完成此操作时,生成的raster.img文件大小约为877 mb,而我加在一起的各个光栅文件不大于4 mb。此外,有时候我将3个栅格组合成1个,有时我将10个栅格组合成1个。无论我开始使用多少个栅格文件,所得到的栅格文件都是相同的大小。

以下是我如何将栅格添加到一起并写入文件的示例代码

library(raster)
r1 <- r2 <- r3 <- raster(nrow=10, ncol=10)
values(r1) <- runif(ncell(r1))
values(r2) <- runif(ncell(r2))
values(r3) <- runif(ncell(r3))
combined <- r1 + r2 + r3
writeRaster(combined, "data/filename.img", overwrite = T)

基于类似的问题here我检查了输入栅格和组合栅格的数据类型是否相同,它们是。所有这些都是FLT4S。组合栅格中的结果值似乎不对 - 我没有负值或荒谬的高值或任何东西。

还有其他我不知道的事吗?可能会有一些优质的栅格,我会忽略那会影响到它的光栅吗?

1 个答案:

答案 0 :(得分:1)

数据类型可以发挥作用:

x <- writeRaster(combined, "filename1.img", datatype='FLT4S', overwrite=TRUE)
y <- writeRaster(combined, "filename2.img", datatype='INT2S', overwrite=TRUE)
file.size("filename1.img")
#[1] 23249
file.size("filename2.img")
#[1] 15057

但您声明所有文件都是FLT4S。鉴于文件大小的差异非常大(> 200倍),必须继续进行其他工作。输入文件可能已压缩。您可以压缩输出文件(请参阅manual

z <- writeRaster(combined, "filename3.img", datatype='FLT4S', options="COMPRESSED=YES", overwrite=TRUE)
file.size("filename3.img")
#[1] 7429

这比没有压缩的情况小约3倍。也许原始数据可以被压缩得更多,但它似乎不太可能减少200倍。