如何永久舍入栅格图层,矩阵或数组中的值,以使用r studio写入新文件?

问题描述 投票:0回答:1

我试图围绕一个3维矩阵或几个栅格图层,这些图层将被制作成3维矩阵到2个小数位,以制作一个占用更少内存的新netcdf文件。

使用圆函数如下:

newmatrix <- round(oldmatrix, 2)

似乎只是表面上显示圆形值。将newmatrix添加到新文件后打开newmatrix并从中提取值将返回oldmatrix中的未舍入值。尽管在将新数据添加到新文件之前从newmatrix中提取的值将被舍入到应该的2位小数。如果我在使用它们创建新矩阵之前舍入栅格图层,则会发生同样的情况。

我可以使用什么函数来永久地舍入矩阵或栅格的值以写入舍入的新文件?

r netcdf
1个回答
1
投票

NetCDF没有固定的精确格式,可以按照您期望的方式节省空间。 (有关数据类型,请参阅here)。节省空间的通常方法是编码为一个短整数并设置变量属性scale_factoradd_offset

在你的情况下,你将乘以100,转换为短,并有scale_factor=0.01。在R中执行此操作可能需要做很多工作,但nco实用程序会在几行中处理它。假设您有一个名为rh的变量。

ncap2 -v -s 'rh=short(100*rh)' in.nc out.nc
ncatted -O -h -a add_offset,rh,o,f,0 out.nc
ncatted -O -h -a scale_factor,rh,o,f,0.01 out.nc

如果您想在将变量读入R时节省内存,您可能会感到失望,因为它会在读取时转换回浮点数。

© www.soinside.com 2019 - 2024. All rights reserved.