为什么在聚合/裁剪后我的光栅文件大小会增加?

问题描述

我正在处理有关空气污染的 NETcdf 文件。每月数据存储在 .nc 文件中,文件覆盖整个北美,分辨率为 0.01*0.01。但是,我只需要美国的数据,分辨率为 0.5。
所以我做了以下事情:

  1. 使用美国边界裁剪数据:raster::mask(raster::crop(PM25,raster::extent(USA)),USA)
  2. 聚合数据:aggregate(PM25,fact = 50)

然而,在这两个步骤中的每一步之后,我的光栅文件大小都大大增加。我还尝试先聚合然后裁剪栅格。但在这种情况下,文件大小先增加,然后在裁剪后略有减小。

任何想法为什么会发生这种情况?大文件一个大问题,因为我有 100 多个文件需要循环执行上述操作。

感谢任何帮助/建议。谢谢。

解决方法

提出问题时,请出示简明的脚本(最好是独立且可重复的)并提供证据。例如, show(PM25) 和(在您的问题中未命名)聚合输出相同。由于您的问题是关于文件大小,因此您当然应该包括 file.size("filename") 为输入和输出文件返回的内容;并报告输出文件格式。

但是,我想知道您所说的“文件大小”是否实际上是 R 对象的大小。是这样吗?在这种情况下,解释可能是 PM25 在磁盘上(在文件中)具有其值,而具有聚合值的 RasterBrick 在 RAM 内存中具有其值。如果您担心内存不足,您可以使用 filename 这样的参数将值写入文件

aggregate(PM25,fact = 50,filename="agg1.tif")

写入磁盘会导致(可能很小)性能损失。

另外,我认为你应该先使用aggregate,然后使用mask来避免边缘效应。