多维nc数据瘦身——利用nco 在时间维上分割netcdf文件

包含时间维度的格点气象数据一般按“time * lat * lon” 形式保存为netcdf文件。当time维度比较大的时候(比如几百个或跟多),单个文件数据较多,分析时读取时效可能会比较慢,这种情况你可能想把一个较大数据分割为多个小数据。一个高效的工具是nco,本文利用python + nco,批量将月文件分割为日文件。

数据:ERA5 逐小时地面气象数据,每个自然月一个文件(一月:744*180*360),共12个月(12个文件)。

目标:分割为每个自然日一个文件,每个日文件存放当天24个小时的数据(24*180*360)。

原文件如下图:

思路:利用python进行月循环、日循环,并调用系统的nco命令进行逐日的分割、输出。

程序如下:

import os

year=2019
month=[1,2,3,4,5,6,7,8,9,10,11,12]
ndays=[31,28,31,30,31,30,31,31,30,31,30,31]

for im in month:
    for idy in range(1,ndays[im-1]+1):
        first_t = idy*24-23
        last_t  = idy*24
        #print(first_t,last_t)
        if im < 10: 
           if idy < 10: 
               command = 'ncea -F -d time,{},{} ./ERA5_surface_hrly_{}0{}.nc  ./ERA5_surface_hrly_{}0{}0{}.nc'.format(first_t,last_t,year,im,year,im,idy)
           else:
               command = 'ncea -F -d time,{},{} ./ERA5_surface_hrly_{}0{}.nc  ./ERA5_surface_hrly_{}0{}{}.nc'.format(first_t,last_t,year,im,year,im,idy)
        else:
           if idy < 10: 
               command = 'ncea -F -d time,{},{} ./ERA5_surface_hrly_{}{}.nc  ./ERA5_surface_hrly_{}{}0{}.nc'.format(first_t,last_t,year,im,year,im,idy)
           else:
               command = 'ncea -F -d time,{},{} ./ERA5_surface_hrly_{}{}.nc  ./ERA5_surface_hrly_{}{}{}.nc'.format(first_t,last_t,year,im,year,im,idy)
        print(command)
        os.system(command)
~                               

分割后1月数据如下:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值