更改netCDF文件的网格大小

问题描述 投票:3回答:2

假设我有2个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文件,其中包含用户定义的更改的网格大小。

python-3.x bash netcdf netcdf4 cdo-climate
2个回答
5
投票

您可以使用cdo重新映射网格,例如你可以使用常规的1度网格:

cdo remapcon,r360x180 input.nc output.nc

除了保守的第一顺序重映射(remapcon),其他选项是:

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

如果您愿意,也可以将一个文件重新映射到另一个文件中使用的网格。

编辑:回答下面的评论。通常,如果要从高分辨率到低分辨率(“粗网格”)进行插值,则不希望使用双线性插值,因为它基本上会对场进行二次采样。对于非光滑,高度异质的领域,例如降水,这尤其成问题。在这些情况下,我总是建议使用保守的方法(remapcon或remapcon2)。这些方法要慢得多,所以我经常在测试脚本速度时使用双线性,然后在最后一次运行时切换到remapcon。

速度的另一个提示是,如果您在具有相同分辨率的许多输入文件上执行相同的插值程序,那么您可以使用genbil,gencon等计算一次插值权重,然后使用循环中的那些执行重新映射功能文件。这要快得多,因为权重的生成是重映射的缓慢部分


3
投票

NCO的ncremap也有一个单线解决方案。考虑重新引导a.ncb.nc在同一网格上。我们将命名答案c.nc(这是重新划分的a.nc)。

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

要选择保守而不是双线性插值(默认值),请使用-a

ncremap -a conserve -d b.nc a.nc c.nc
© www.soinside.com 2019 - 2024. All rights reserved.