更改netCDF文件的网格大小

5
假设我有两个 netCDF 数据文件,涵盖同一区域(如南美洲、非洲等),但网格大小分别为 0.5 度 x 0.5 度和 1.0 度 x 1.0 度。我想将其网格大小增加或减少到另一个值,例如 0.25 x 0.25 或 1.0 x 1.0,以便可以轻松进行光栅计算和比较等操作。 是否有使用任何 bash 脚本、CDO 等方法来实现此目的。 可以从这里下载示例数据:https://www.dropbox.com/sh/0vdfn20p355st3i/AABKYO4do_raGHC34VnsXGPqa?dl 是否可以采用不同的方法,如双线性插值或三次插值来处理?这在 ArcGIS 和其他软件中非常容易,但是否有一种方法可以处理具有大型数据集的大型 netCDF 文件。请注意,这只是数据子集的一部分。我将以后转换整套年度数据。
生成的文件应该是一个 .nc 文件,其网格大小由用户定义。
2个回答

12

您可以使用cdo来重新映射网格,例如,将其映射到常规的1度网格,您可以使用以下命令:

cdo remapcon,r360x180 input.nc output.nc

除了保守的一阶重映射(remapcon),其他选项包括:

remapbil : bilinear interpolation
remapnn  : nearest neighbour interpolation
remapcon2 : 2nd order conservative remapping

如果您希望,也可以将一个文件重新映射到另一个文件中使用的网格上:

cdo remapcon,my_target_file.nc in.nc out.nc 

编辑于2021年:有新视频可供观看...

针对下面的评论提出的方法选择问题,如果要了解有关这些插值方法以及在粗化数据时必须注意的子采样问题的完整指南,您可以参考我在YouTube上的“重网格和插值”视频指南。

通常,如果您将高分辨率插值到低分辨率(“粗栅格化”)超过两倍,则不应使用双线性插值,因为它实质上会对场进行子采样。这对于非平滑,高度异质的场(例如降水)尤其有问题。在这些情况下,我始终建议使用保守方法(remapcon或remapcon2)。有关详细信息,请参见我的视频指南。

另一个加速的提示是,如果您要对许多具有相同分辨率的输入文件执行相同的插值过程,则可以使用genbil、gencon等一次计算出插值权重,然后在文件循环中使用这些重新映射函数。这样更快,因为生成权重是remapcon的慢部分。


谢谢你,Adrian。我总是会困惑在增加或减小栅格文件的网格大小时应该使用哪种方法(因为改变栅格大小会导致最终结果有很大的不同)。在增加栅格大小和减小栅格大小时,哪种方法最好使用或者你可能知道的任何经验法则? - Ep1c1aN

7

NCO的ncremap也有一行代码的解决方案。考虑将a.nc重采样到与b.nc相同的网格上。我们将答案命名为c.nc(这是重采样后的a.nc)。

ncremap -d b.nc a.nc c.nc

为了选择保守的插值而非双线性插值(默认设置),请使用-a
ncremap -a conserve -d b.nc a.nc c.nc

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