请选择 进入手机版 | 继续访问电脑版
爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 4835|回复: 0

ncl批量处理HDF5格式数据

[复制链接]

新浪微博达人勋

发表于 2019-10-14 17:56:36 | 显示全部楼层 |阅读模式
NCL
系统平台:
问题截图:
问题概况: 批量处理HDF5格式的数据,出现变量维数错误,但数据的确是两维的。还有就是怎么读取文件的文件名?
我看过提问的智慧: 看过
自己思考时长(天): 2

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

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

x
处理GPM卫星的数据,要筛选出中国地区有数据的文件,没有数据的文件就删除。我的脚本如下:
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
begin
    dir="/home/weilei/"
    dirp="/home/weilei/"
    filenames=systemfunc("cd /home/weilei ; ls *.HDF5")
    files = systemfunc("ls /home/weilei/2A.GPM.DPR.V8-*.HDF5")
    h5_file= addfiles(files,"r")
    lat1     =  3.86
    lat2     =  53.55
    lon1     =  73.66
    lon2     =  135.03
  data_raw = h5_file[:]->/NS/SLV/zFactorCorrectedESurface
  data_raw@_FillValue = data_raw@CodeMissingvalue
  data_raw@_FillValue = -2.147484e+09
  printVarSummary(data_raw)
  printMinMax(data_raw,0)
  longitude=h5_file[:]->/NS/Longitude
  latitude=h5_file[:]->/NS/Latitude
  longitude@units = "degrees_east"
  latitude@units = "degrees_north"
  nsizescan=dimsizes(data_raw(:,0))
  nsizeray=dimsizes(data_raw(0,:))
  print(nsizescan)
  print(nsizeray)
  sumdata=0.0
  do ns=0,nsizescan-1
    do nr=0,nsizeray-1
      if (latitude(ns,nr).ge.lat1.and.latitude(ns,nr).le.lat2) then
         if (longitude(ns,nr).ge.lon1.and.longitude(ns,nr).le.lon2) then
           sumdata=sumdata+data_raw(ns,nr)
         end if
      end if
    end do
  end do
  print(sumdata)
  if (ismissing(sumdata).or.sumdata.eq.0.0) then
    system("rm -rf "+filenames)
  end if
end

运行后的问题如图,第40行是:system("rm -rf "+filenames),filenames在前面定义了,是想读取所有文件的文件名,但好像行不通。
还请大佬们指教!
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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