问题描述
我正在处理有关空气污染的 NETcdf 文件。每月数据存储在 .nc 文件中,文件覆盖整个北美,分辨率为 0.01*0.01。但是,我只需要美国的数据,分辨率为 0.5。
所以我做了以下事情:
- 使用美国边界裁剪数据:
raster::mask(raster::crop(PM25,raster::extent(USA)),USA)
- 聚合数据:
aggregate(PM25,fact = 50)
然而,在这两个步骤中的每一步之后,我的光栅文件大小都大大增加。我还尝试先聚合然后裁剪栅格。但在这种情况下,文件大小先增加,然后在裁剪后略有减小。
任何想法为什么会发生这种情况?大文件是一个大问题,因为我有 100 多个文件需要循环执行上述操作。
感谢任何帮助/建议。谢谢。
解决方法
提出问题时,请出示简明的脚本(最好是独立且可重复的)并提供证据。例如, show(PM25)
和(在您的问题中未命名)聚合输出相同。由于您的问题是关于文件大小,因此您当然应该包括 file.size("filename")
为输入和输出文件返回的内容;并报告输出文件格式。
但是,我想知道您所说的“文件大小”是否实际上是 R 对象的大小。是这样吗?在这种情况下,解释可能是 PM25
在磁盘上(在文件中)具有其值,而具有聚合值的 RasterBrick
在 RAM 内存中具有其值。如果您担心内存不足,您可以使用 filename
这样的参数将值写入文件
aggregate(PM25,fact = 50,filename="agg1.tif")
写入磁盘会导致(可能很小)性能损失。
另外,我认为你应该先使用aggregate
,然后使用mask
来避免边缘效应。