nco 每天从上午 10 点到上午 10 点将每日 netcdf 文件剪切成重复的上午 10 点条目
nco cut daily netcdf file from 10AM to 10AM everyday with duplicated 10am entries
我是 nco 的初学者,我想将我的 .nc 文件(从 1996010110 到 2019123110)拆分为每日文件,从上午 10 点到晚上 10 点。在这种情况下,每个拆分文件包含 YYYY-MM-DD:10:00
到 YYYY-MM-(DD+1):10:00
。请注意,DD 日的结束时间在第二天开始时重复。即YYYY-MM-DD:10:00
的数据在file_YYYY_MM_DD.nc
中出现了两次,作为起始数据,也是file_YYYY_MM_(DD-1).nc
的结束数据。
谢谢!
有一个 CDO 命令允许您 select 小时的子范围:
cdo selhour,10/22 in.nc out.nc
这将回答问题的第一部分,但从我的评论中您会发现该问题需要进一步澄清。
在 NCO 中执行此操作的方法是随着时间的推移环绕一个循环,使用 hyperslabber 的子循环形式来消除重复的时间戳,然后在几天内循环以创建类似于此文档示例的每个文件here。对于第一个所需记录为索引 10 的输入,最后一个所需索引是无界的,重复序列中的记录数(即组之间的步幅)为 25,连续所需记录数(a 的所需子集)组)是 24,第一个命令是这样的:
ncrcat -d time,10,,25,24 in.nc out.nc
然后 out.nc
将包含数千天的数据,没有重复的时间步长,您可以根据需要将该文件拆分为每天的文件,包括将 ncrcat
包裹在一个循环中,例如
编辑 20210924:根据下面的说明,您可以忽略此消息的上述部分并直接进入此循环,该循环已被修改为每天提取 25 个时间步长。
for yr in {1996..2019}; do
for mth in {1..12}; do
for day in {1..${dpm[mth]}}; do # Days-per-month array exercise left for the reader :)
yyyy=`printf "%04d" $yr`
mm=`printf "%02d" $mth`
dd=`printf "%02d" $day`
ncrcat -d time,${yyyy}-${mm}-${dd}T10:00:00,${yyyy}-${mm}-${ddp1}T10:00:00 out.nc file_${yyyy}_${mm}_${dd}.nc
done
done
done
我是 nco 的初学者,我想将我的 .nc 文件(从 1996010110 到 2019123110)拆分为每日文件,从上午 10 点到晚上 10 点。在这种情况下,每个拆分文件包含 YYYY-MM-DD:10:00
到 YYYY-MM-(DD+1):10:00
。请注意,DD 日的结束时间在第二天开始时重复。即YYYY-MM-DD:10:00
的数据在file_YYYY_MM_DD.nc
中出现了两次,作为起始数据,也是file_YYYY_MM_(DD-1).nc
的结束数据。
谢谢!
有一个 CDO 命令允许您 select 小时的子范围:
cdo selhour,10/22 in.nc out.nc
这将回答问题的第一部分,但从我的评论中您会发现该问题需要进一步澄清。
在 NCO 中执行此操作的方法是随着时间的推移环绕一个循环,使用 hyperslabber 的子循环形式来消除重复的时间戳,然后在几天内循环以创建类似于此文档示例的每个文件here。对于第一个所需记录为索引 10 的输入,最后一个所需索引是无界的,重复序列中的记录数(即组之间的步幅)为 25,连续所需记录数(a 的所需子集)组)是 24,第一个命令是这样的:
ncrcat -d time,10,,25,24 in.nc out.nc
然后 out.nc
将包含数千天的数据,没有重复的时间步长,您可以根据需要将该文件拆分为每天的文件,包括将 ncrcat
包裹在一个循环中,例如
编辑 20210924:根据下面的说明,您可以忽略此消息的上述部分并直接进入此循环,该循环已被修改为每天提取 25 个时间步长。
for yr in {1996..2019}; do
for mth in {1..12}; do
for day in {1..${dpm[mth]}}; do # Days-per-month array exercise left for the reader :)
yyyy=`printf "%04d" $yr`
mm=`printf "%02d" $mth`
dd=`printf "%02d" $day`
ncrcat -d time,${yyyy}-${mm}-${dd}T10:00:00,${yyyy}-${mm}-${ddp1}T10:00:00 out.nc file_${yyyy}_${mm}_${dd}.nc
done
done
done