爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 5131|回复: 0

[源代码] python循环读取NCEP提供的日平均地表辐射通量nc文件并存入文本文件中

[复制链接]

新浪微博达人勋

发表于 2022-5-1 23:35:41 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
先把要读取的nc文件放在同一文件夹中,再用python循环读取,读取文件为从NCEP下载的向下地表平均日长波辐射通量,并计算其月平均值,存放至一个文本文件中
NCEP日平均地表向下长波辐射通量下载网址:https://psl.noaa.gov/cgi-bin/db_search/DBListFiles.pl?did=195&tid=98666&vid=1234
  1. import netCDF4 as nc
  2. import numpy as np
  3. from os import listdir
  4. from os.path import join
  5.                
  6. data = np.zeros((5,12,94,192)) #建立年份*月份*纬向格点数*经向格点数的数列
  7. path = r'E:' #nc文件存放文件夹

  8. a = 0
  9. for filename in listdir(path):
  10.     #读取nc文件
  11.     file = join(path,filename)
  12.     nc_obj = nc.Dataset(file)
  13.     x = nc_obj.variables['dlwrf'][:] #dlwrf为nc文件中的变量名
  14.     nc_obj.close()
  15.     #计算月平均值
  16.     num = 0
  17.     for m in range(12):
  18.         if m in[1,3,5,7,8,10,12]:
  19.             mnum = 31
  20.         elif m == 2:
  21.             if (a+1979) % 4 == 0 and (a+1979) % 100 != 0:
  22.                 mnum = 29
  23.             else:
  24.                 mnum = 28
  25.         else:
  26.             mnum = 30
  27.         for i in range(94):
  28.             for j in range(192):
  29.                 data[a,m,i,j] = sum(x[num:num+mnum,i,j]) / mnum
  30.         num = num + mnum
  31.     a = a + 1

  32. #将月平均值按年份、月份、纬度、经度的顺序存放至dat文件中
  33. with open(r'ulwrf.dat','w') as fp:
  34.     for n in range(39):
  35.         for m in range(12):
  36.             for i in range(94):
  37.                 for j in range(192):
  38.                     fp.write(str(data[n,m,i,j])+'  ')
复制代码
详情也可查看https://blog.csdn.net/qq_47672397/article/details/124534856?spm=1001.2014.3001.5501

密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表