爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 7381|回复: 7

[经验总结] 【求助】用addfiles读取多个nc文件并求逐日平均出错

[复制链接]

新浪微博达人勋

发表于 2022-2-24 09:42:29 | 显示全部楼层 |阅读模式

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

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

x
目标:读取1991-2020年850hPa vwnd,将时间维串联起来,用clmDayTLL()实现逐日气候态。代码:   
begin

latstart = 0
latend = 50
lonstart = 110
lonend = 120
level = 850

list_of_files = systemfunc("ls D:/lwsj/vwnd/vwnd.*.nc")
f = addfiles(list_of_files, "r")
ListSetType(f, "cat")
time = f[:]->time
vwnd = f[:]->vwnd(:,{level},{latstart:latend},{lonstart:lonend})

    YYYYMMDD = cd_calendar(time, -2)
    itClm_s = 19910101
    itClm_e = 20201231
    recClm_s = ind(YYYYMMDD .eq. itClm_s)
    recClm_e = ind(YYYYMMDD .eq. itClm_e)
    vwnd_Clm = vwnd(recClm_s:recClm_e,:,:) ;


    TIME    = cd_calendar(time, 0)          ; type float
    year    = toint( TIME(:,0) )
    month   = toint( TIME(:,1) )
    day     = toint( TIME(:,2) )
    ddd     = day_of_year(year, month, day)
    yyyyddd = year*1000 + ddd                                  ; needed for input
    vwndClmDay = clmDayTLL(vwnd_Clm,yyyyddd)
    vwndClmDay!0 = "year_day"
    vwndClmDay!1 = "lat"
    vwndClmDay!2 = "lon"

    delete(time)
    delete(year)
    delete(month)
    delete(day)
    delete(ddd)
    delete(yyyyddd)

报错:
warning:Aggregated dimension coordinate values are non-monotonic; check aggregated file ordering
warning:Aggregated dimension coordinate values are non-monotonic; check aggregated file ordering
fatal:Illegal Subscript. Only scalar values are allowed in subscript ranges.

vwnd_Clm = vwnd(recClm_s:recClm_e,:,:) 错误

ncl小白感谢各位大佬的帮助!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2022-2-24 10:25:12 | 显示全部楼层

回帖奖励 +5 金钱

我没有用过这个函数,感觉问题出在recClm_s和recClm_e,你可以试试笨方法,加print,一行一行地排查。希望能帮上你

    YYYYMMDD = cd_calendar(time, -2)
    print(YYYYMMDD)
    itClm_s = 19910101
    itClm_e = 20201231
    recClm_s = ind(YYYYMMDD .eq. itClm_s)
    recClm_e = ind(YYYYMMDD .eq. itClm_e)
    print(recClm_s)
    print(recClm_e)
    vwnd_Clm = vwnd(recClm_s:recClm_e,:,:) ;
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-2-24 10:27:26 | 显示全部楼层

回帖奖励 +5 金钱

问题应该是出在recClm_s和recClm_e,你试试从这之前print一下
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-2-25 17:33:25 | 显示全部楼层

回帖奖励 +5 金钱

没引入包哦。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-3-3 16:19:17 | 显示全部楼层

回帖奖励 +5 金钱

fatal:Illegal Subscript. Only scalar values are allowed in subscript ranges.
这句的意思是,你的索引并不是标量,也就是说recClm_s和recClm_e这两个参数可能是数列,建议print出来看看
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-3-26 15:12:36 | 显示全部楼层
你这个数据是不是每一个日期有四个时次?
    recClm_s = ind(YYYYMMDD .eq. itClm_s)
    recClm_e = ind(YYYYMMDD .eq. itClm_e)
    vwnd_Clm = vwnd(recClm_s:recClm_e,:,:) ;
所以recClm_s/e都不是标量
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-4-14 17:18:59 | 显示全部楼层

    date = ind((YYYYMMDD .ge. itClm_s).and.(YYYYMMDD .le. itClm_e))
    vwnd_Clm = vwnd(date,:,:) ;
试试这样。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-11-30 23:31:47 | 显示全部楼层

你好,请问是缺少了哪个包?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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