爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 13061|回复: 1

[经验总结] 中国气象科学数据0.5°×0.5°格点数据的处理小结

[复制链接]
发表于 2021-3-22 19:35:35 | 显示全部楼层 |阅读模式

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

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

x
    科研小白,白嫖多年,第一次发帖,经验不足,还请各路大神指正。话不多说,直入正题。
    最近看论文,想重现一下文中降水的年际变化,需要用到中国气象科学数据网所提供0.5°×0.5°格点降水月数据。下载过程非常曲折,首先要实名注册,通过后才能下载,并且等级较低时每天只能下载20M数据,我签到了好多天,才能下得稍微多一点。(网上不少人吐槽这个事,咱自己用数据还这么费劲)
   格点数据是文本格式的,并且是单独的月数据,我下载了51年数据,共612个txt数据,真是崩溃!在txt中打开以后,如果缩小后,会发现数据是个中国地图的轮廓。但不含有经纬度信息,ncl不能根据经纬度信息,划定所需地区的范围,也就无法直接拿来画图,所以我需要把612个数据转换为netCDF数据,也就是常用的.nc数据,一共三个维度:time,lat,lon,lat和lon可以根据数据格式说明,来反向还原,其中关键的语句是:
ncols                = 128
nrows                = 72
xllcorner        = 72.25  ;lon
yllcorner        = 18.25  ;lat
lat                  = fspan (yllcorner,yllcorner+(nrows-1)*0.5,nrows)
lon                   = fspan (xllcorner,xllcorner+(ncols-1)*0.5,ncols)
lat@units      = "degrees_north"
lon@units      = "degrees-east"

时间维度还没解决,等解决了来完善此帖。完整代码如下:
begin
  diri                = "D:/data/data_create/pre-nc/"
  filname         = "SURF_CLI_CHN_PRE_MON_GRID_0.5-"
  filformat        = ".nc"

  files        = systemfunc("ls /cygdrive/d/data/pre/SURF_*")            ; ?????????
  nf                = dimsizes(files)
  do i=1961,2011
   do j=1,12
    k=(i-1961)*12+j-1                                                        ;??grid?????
    print(i*100+j +" Now reading... " + files(k))     ;????
        filtime = i*100+j
        outfile         = diri+filname+filtime+filformat       
       
;************??nc???????*************************
system("rm -f "+outfile)
ncdf                 = addfile(outfile,"c")
dim_names         = (/ "lat",  "lon" /)
dim_Unlim         = (/ False , False/)
dim_sizes         = (/ 72,128/)
filedimdef(ncdf,dim_names,dim_sizes,dim_Unlim)
ncols                = 128
nrows                = 72
xllcorner        = 72.25  ;lon
yllcorner        = 18.25  ;lat
lat                  = fspan (yllcorner,yllcorner+(nrows-1)*0.5,nrows)
lon                   = fspan (xllcorner,xllcorner+(ncols-1)*0.5,ncols)
lat@units      = "degrees_north"
lon@units      = "degrees-east"
;********************?grid????????nc???********************
T = readAsciiTable(files(k),ncols,"float",6)
p= T(::-1,:)                       
p@_FillValue        = -9999.0
p!0            = "lat"                     
p!1                   = "lon"
p&lat          = lat                    
p&lon          = lon
p@long_name        = "Monthly mean precipition in China"
p@units            = "mm"
ncdf->p          = p

delete(filtime)               ;?????????????
delete(outfile)
delete(T)
delete(p)
delete(ncdf)

end do                        
end do                              


end

密码修改失败请联系微信:mofangbao
发表于 2021-3-23 08:19:30 | 显示全部楼层
这个降水数据在有的时间里都没数据
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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