【发布时间】:2013-04-21 05:22:32
【问题描述】:
有没有办法使用 numpy 对 python 中的两个 netcdf 文件执行区域统计功能?但是不使用gdal?较精细的 netcdf 为 0.5 度,较大的 netcdf 为 2 度。所以,我想对落在较大的 2 度单元内的所有 0.5 度单元进行平均。
谢谢!
【问题讨论】:
有没有办法使用 numpy 对 python 中的两个 netcdf 文件执行区域统计功能?但是不使用gdal?较精细的 netcdf 为 0.5 度,较大的 netcdf 为 2 度。所以,我想对落在较大的 2 度单元内的所有 0.5 度单元进行平均。
谢谢!
【问题讨论】:
我实际上会使用气候数据运算符 (cdo) 来执行此任务,而不是使用 numpy。这可以处理所有类型的原生网格,而不仅仅是您在这里遇到的特殊情况,即一个网格单元正好分成 16 个。
为了将 file1.nc 映射到 file2.nc,我们首先计算权重。
cdo gencon,file2.nc file1.nc weights.nc
这里我使用一阶保守重映射,因此假设 file1 的分辨率为 0.5,file2 的分辨率为 2.0,粗略区域的总和应该被保留。请注意,cdo 中还有许多其他选项可用于重新映射。
现在我们重新映射:
cdo remap,file2.nc,weights.nc file1.nc file1_remap.nc
区分和分区方法也很简单:
cdo sub file1_remap.nc file2.nc diff.nc
cdo zonmean diff.nc diff_zonmean.nc
您甚至可以使用管道将其保持在一行:
cdo zonmean -sub file1_remap.nc file2.nc diff_zonmean.nc
【讨论】: