如何使用R中的双线性插值减小netCDF的分辨率(重新网格化)?

6

我从这里下载了netCDF文件,分辨率为0.5*0.5。我想将这些文件重新网格化为更粗的1*1分辨率。我找到了一些链接。第一个链接讲述了如何在R中进行网格化,但没有使用双线性插值。第二个链接涉及双线性插值,但使用的是气候数据操作器(我不太熟悉)。然后我发现了一个R包HiClimR。在这个包中,一个命令coarseR可以降低数据的分辨率。我将netCDF文件转换为Excel文件并使用coarseR。但得到结果后,我发现该命令实际上以某种方式跳过了经度纬度,并将分辨率降低到1*1。总之,我的问题是:

(1) 在降低分辨率时使用coarseR是否正确? (2) 如何在R中针对我的特定问题使用双线性变换?

非常感谢。

1个回答

7

CDO内置了一些非常好的重新网格化功能,现在您可以使用气候运算符包直接从R中访问这些功能。安装后使用即可。

devtools::install_github("markpayneatwork/ClimateOperators")

您需要加载它。
library(ClimateOperators)

例如,如果您想使用双线性插值将网格重新调整为1x1的常规网格,请从Linux命令行执行以下操作:
cdo remapbil,r720x360 in.nc out.nc

使用R中的气候运算符包,可以将其翻译为:
cdo("remapbil,r720x360","in.nc","out.nc") 

如果您在不运行命令的情况下查看命令是如何构建的,可以在调用中使用选项“debug=True”。

但是,如果您正在转换为更粗糙的网格,则可能建议使用保守的重映射技术,否则在重映射过程中可能会漏掉一些点。这对于高度异质性的场(如降水)尤其重要。在这种情况下,CDO提供了一阶和二阶保守的重映射技术。要使用第一阶技术

cdo remapcon,r720x360 in.nc out.nc

注意,如果数据是“紧缩”的并且在转换过程中出现精度损失,偶尔您可能会发现CDO出现故障,此时它会建议您使用选项“-b f32”或“-b f64”。
常见的重构选项包括:
- remapbil:双线性插值 - remapnn:最近邻插值(即从最近的单元格中获取值) - remapcon:一阶保守重映射 - remapcon2:二阶保守重映射
有关重构技术及如何使用CDO实现它们的解释在我的气候未封装的YouTube视频指南中有更详细的介绍。

我不熟悉CDO,但我会尝试。谢谢你的回答。 - Pankaj
如果您使用的是Ubuntu机器,您可以通过sudo apt-get install cdo简单地安装它。在MAC上也很简单。如果您使用的是Windows,则有一个CDO二进制文件,但我从未尝试过,我认为他们建议在cygwin环境中安装它。 - ClimateUnboxed
更新我的上面的评论,在Windows 10上现在可以简单地安装Linux Ubuntu作为子系统,然后您可以像在纯Linux上一样输入sudo apt-get install cdo。 - ClimateUnboxed
1
如果您使用Python,可以通过conda获取它。使用conda install cdo,然后您就可以在您的虚拟环境中安装它。现在您可以从终端使用它:cdo ... - Xbel
2019年推出了一个新的软件包,使得从R中使用CDO更加容易。请查看我的修订答案。 - ClimateUnboxed

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接