爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 12134|回复: 2

[其他] ncl数据处理求助,多个grib2数据合成一个nc

[复制链接]
发表于 2020-10-13 20:38:02 | 显示全部楼层 |阅读模式

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

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

x
因为需要后续6个四维的数据(xyzt)来计算大气热源q1,所以需要合成为有时间维的nc数据,原始数据为3维(xyz),提取3个grib2数据作为合成的例子来操作,所用的ncl是用气象家园论坛一键安装的cygwin,将ncl脚本放到“d:/123"路径下,将3个例子放在”d:/123/vvp1"路径下,单个grib2数据属性如下:Variable: f
Type: file
filename:       CRA40_VVP_197901_GLB_MONTH_V1_0_0
path:   D:/123/vvp1/CRA40_VVP_197901_GLB_MONTH_V1_0_0.grib2
   file global attributes:
   dimensions:
      lv_ISBL0 = 37
      lat_0 = 576
      lon_0 = 1152
   variables:
      float VVEL_P0_L100_GGA0 ( lv_ISBL0, lat_0, lon_0 )
         center :       US National Weather Service - NCEP (WMC)
         production_status :    Operational products
         long_name :    Vertical velocity (pressure)
         units :        Pa s-1
         _FillValue :   1e+20
         grid_type :    Gaussian latitude/longitude
         parameter_discipline_and_category :    Meteorological products, Momentum
         parameter_template_discipline_category_number :        ( 0, 0, 2, 8 )
         level_type :   Isobaric surface (Pa)
         forecast_time :        0
         forecast_time_units :  hours
         initial_time : 01/01/1979 (00:00)


      float lat_0 ( lat_0 )
............
数据维度为3维,唯一能证明时间的是VVEL_P0_L100_GGA0下的initial_time,数据是逐月数据,第二个数据的时间为 initial_time : 02/01/1979 (00:00),用以下脚本读取3个数据并且生成新的维度:
begin
  diri="D:/123/vvp1/"
  all_files = systemfunc ("ls "+diri+"CRA40_VVP_*_GLB_MONTH_V1_0_0.grib2")   
   fall = addfiles (all_files, "r")
   ListSetType (fall, "join")
   vvp = fall[:]->VVEL_P0_L100_GGA0  
   printVarSummary(vvp)   
end

ncl的结果为:
Variable: vvp
Type: float
Total Size: 294617088 bytes
            73654272 values
Number of Dimensions: 4
Dimensions and sizes:   [ncl_join | 3] x [lv_ISBL0 | 37] x [lat_0 | 576] x [lon_0 | 1152]
Coordinates:
            lv_ISBL0: [10000..100000]
            lat_0: [89.76099..-89.76099]
            lon_0: [ 0..359.6875]
Number Of Attributes: 12
  center :      US National Weather Service - NCEP (WMC)
  production_status :   Operational products
  long_name :   Vertical velocity (pressure)
  units :       Pa s-1
  _FillValue :  1e+20
  grid_type :   Gaussian latitude/longitude
  parameter_discipline_and_category :   Meteorological products, Momentum
  parameter_template_discipline_category_number :       ( 0, 0, 2, 8 )
  level_type :  Isobaric surface (Pa)
  forecast_time :       0
  forecast_time_units : hours
  initial_time :        01/01/1979 (00:00)
维度变成四维了,但是怎么把第四维变成时间维并且将正确时间赋值进去呢?即用grads读出来时间起始是197901 时间间隔为1个月呢?并且选取37层高度层中的17层,最后转成一个完整的nc数据,即为3(时间)*17(选取的高度层)*576*1152的四维数据。请问接下来应该怎么实现呢?因为看了官网的grib2转nc,单个grib2数据转出来用grads打开时间是不清楚的,不知道是不是因为原始数据没有时间维,有没有人知道接下来应该怎么写入正确的时间,选取37个高度层中的17层并且最后生成为nc数据啊?看官网只会一个个来,批量处理做不出来哇?有没有大佬能教下哇??







密码修改失败请联系微信:mofangbao
发表于 2020-12-8 14:34:04 | 显示全部楼层

回帖奖励 +5 金钱

请问楼主后来解决了这个问题了吗?想学习一下
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-11 02:59:52 | 显示全部楼层
我已经不太记得了,后来有个脚本是能处理出来的,但因为数据库量太大实现不了,但ncl脚本是对的,你可以翻下我后来发的帖子,我好像有发求助
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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