使用 unix 中另一个文件的维度提取许多 netcdf 文件的一部分

Extract part of many netcdf files using dimensions from another file in unix

我有几千个 .nc 文件,每个文件都需要 trimmed 以匹配另一组文件的大小 (lat/lon)。我只想要 70-90N 的数据,但长文件包含全局数据。 运行 longFile1.nc 上的 ncdump 给出

    dimensions:
    altitude = 40
    dim = 55890;
    nv = 2;

和 运行 在 shortFile1.nc 上的 ncdump 给出

    dimensions:
    fakeDim14 = 8111;
    fakeDim15 = 1;

longFile1.nc需要缩减,使dim = 8111。短文件维度长度随每个文件而变化。我知道我需要每个长文件的开头,但每次结束点都会不同。

我可以 trim longFile1.nc 和

    ncks -C -d it,0,8010 -v lat,lon,instant_cloud_phase longFile1.nc -o trimmedLongFile1.nc

但我不知道如何对所有文件执行此操作,尤其是因为每个文件的长度都不同。我还必须从索引 0-8010 开始,以保​​持正确的纬度范围。有没有办法从每个短文件中读取第一维,然后在上面的 nco 命令中为每个相应的长文件使用它? nco 命令是执行此操作的最佳方法吗?

提前致谢!

使用 NCO 过滤器 ncdmnsz 并将整个内容放在文件循环中:

for fl in `ls longFile*.nc`; do
   dmnsz=`ncdmnsz fakeDim14 $fl`
   ncks -F -d it,,$dmnsz -v ...
done

注意 -F 用于基于 1 的索引。