爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 8858|回复: 10

[脚本编辑] 在脚本文件里如何批量读取多个nc文件,并进行相应运算-气候年平均?

[复制链接]

新浪微博达人勋

发表于 2018-4-14 22:18:29 | 显示全部楼层 |阅读模式

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

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

x
三个nc文件,时间连续,均为多年月平均pdsi指数分布,同时打开这三个文件后,要求先求逐年平均,再对年平均求气候平均。感觉不难,但我绕不过这个弯儿呀。附上我混乱的脚本内容。求解答,很急很急的那种。'reinit''sdfopen D:\gradsht\remap05x05.pdsi.mon.mean.selfcalibrated_190001-194912.nc''sdfopen D:\gradsht\remap05x05.pdsi.mon.mean.selfcalibrated_195001-199912.nc''sdfopen D:\gradsht\remap05x05.pdsi.mon.mean.selfcalibrated_200001-201412.nc''set lon 70 150''set lat 3 60''set lev 0''set t 1 12''define pave1=ave(pdsi,t=13,t=600,1yr)''define pave2=ave(pdsi,2,t=1,t=600,1yr)''define pave3=ave(pdsi,3,t=1,t=180,1yr)''define pave=(pave1+pave2+pave3)/3''modify pave seasonal''set rgb 23 0 128 255'    'set rgb 24 0 255 255'  'set rgb 25 128 255 255'  'set rgb 32 255 0 0'  'set rgb 33 255 128 0'  'set rgb 34 255 128 64'    'set rgb 35 255 255 0''set rgb 36 255 255 128''set t 1 180''set mpdset cnbasemap''set gxout shaded''cnbasemap pave' pull dummy'c'


密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-4-15 09:05:00 | 显示全部楼层
三个文件的时间长短不一致,所以求得的平均数在最后平均时的权重应该是不同的。
还有,打开多个文件时,标识不同文件的变量应该是pdsi.1,pdsi.2,pdsi.3,不应该是逗号吧。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-4-15 11:11:40 | 显示全部楼层
本帖最后由 LemonTree007 于 2018-4-15 11:13 编辑
1099221723 发表于 2018-4-15 09:05
三个文件的时间长短不一致,所以求得的平均数在最后平均时的权重应该是不同的。
还有,打开多个文件时,标 ...

谢谢提醒打开多个文件的标识问题,这个小知识我都没影响了,惭愧。
权重问题:我是先对月平均数据求年平均,得出114年的年平均数据,然后再对年平均数据求气候平均,所以权重问题应该是不存在的。
新问题:我觉得我定义临时变量有问题,运行时出现错误。
function not found pave
error occurred on line 16求大神指教!!感激不尽。
  1. 'reinit'
  2. 'sdfopen D:\gradsht\remap05x05.pdsi.mon.mean.selfcalibrated_190001-194912.nc'
  3. 'sdfopen D:\gradsht\remap05x05.pdsi.mon.mean.selfcalibrated_195001-199912.nc'
  4. 'sdfopen D:\gradsht\remap05x05.pdsi.mon.mean.selfcalibrated_200001-201412.nc'
  5. 'set lon 70 150'
  6. 'set lat 3 60'
  7. 'set lev 0'
  8. 'set t 1 600'
  9. 'define pave=pdsi'
  10. 'set t 1'
  11. i=1
  12. if(i<115)
  13.     if(i<51)
  14.         'set lon 70 150'
  15.         'set lat 3 60'
  16.         pave(i)=ave(pdsi.1,t='t+12',t='t+24')
  17.         i=i+1
  18.        'set t 't+12''
  19.     endif
  20.    'set t 1'
  21.     if(i<101)
  22.         'set lon 70 150'
  23.         'set lat 3 60'
  24.         pave(i)=ave(pdsi.2,t='t',t='t+12')
  25.         i=i+1
  26.         'set t 't+12''
  27.     endif
  28.     'set t 1'
  29.     if(i>100)
  30.         'set lon 70 150'
  31.         'set lat 3 60'
  32.         pave(i)=ave(pdsi.3,t='t',t='t+12')
  33.         i=i+1
  34.         'set t 't+12''
  35.     endif
  36. endif
  37. 'define save=ave(pave,1,114)'
  38. 'set mpdset cnbasemap'
  39. 'set gxout shaded'
  40. 'set rgb 23 0 128 255'   
  41. 'set rgb 24 0 255 255'  
  42. 'set rgb 25 128 255 255'  
  43. 'set rgb 32 255 0 0'  
  44. 'set rgb 33 255 128 0'  
  45. 'set rgb 34 255 128 64'   
  46. 'set rgb 35 255 255 0'
  47. 'set rgb 36 255 255 128'
  48. 'cnbasemap save'
  49. pull dummy
  50. 'c'



复制代码

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-4-15 12:17:32 | 显示全部楼层
grads中没有pave(i)这种表达方式,pave.i才是,还有你之前的方式应该是可以的,试试这个
'reinit'
'sdfopen D:\gradsht\remap05x05.pdsi.mon.mean.selfcalibrated_190001-194912.nc'
'sdfopen D:\gradsht\remap05x05.pdsi.mon.mean.selfcalibrated_195001-199912.nc'
'sdfopen D:\gradsht\remap05x05.pdsi.mon.mean.selfcalibrated_200001-201412.nc'
'set lon 70 150'
'set lat 3 60'
'set lev 0'
'define pave1=ave(pdsi.1,t=1,t=600)'
'define pave2=ave(pdsi.2,t=1,t=600)'
'define pave3=ave(pdsi.3,t=1,t=180)'
'define pave=(pave1*50+pave2*50+pave3*15)/115'
'd pave'

密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-4-15 14:47:25 | 显示全部楼层
1099221723 发表于 2018-4-15 12:17
grads中没有pave(i)这种表达方式,pave.i才是,还有你之前的方式应该是可以的,试试这个
'reinit'
'sdfop ...

Data request warning:Request is completely outside file limits
这个运行出来是数据请求完全超出文件限制?为什么?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-4-15 23:00:22 | 显示全部楼层
LemonTree007 发表于 2018-4-15 14:47
Data request warning:Request is completely outside file limits
这个运行出来是数据请求完全超出文件 ...

每次定义之前都要用‘set dfile n’来确定变量操作对应的文件n
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2019-4-18 23:09:29 | 显示全部楼层
请问最后怎么解决的?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-4-19 07:52:37 | 显示全部楼层
hgsndg 发表于 2019-4-18 23:09
请问最后怎么解决的?

根据大家的回复大致应该是这个意思,但具体文件我现在没有了,你可以试试看。
'reinit'
'sdfopen D:\gradsht\remap05x05.pdsi.mon.mean.selfcalibrated_190001-194912.nc'
'sdfopen D:\gradsht\remap05x05.pdsi.mon.mean.selfcalibrated_195001-199912.nc'
'sdfopen D:\gradsht\remap05x05.pdsi.mon.mean.selfcalibrated_200001-201412.nc'
'set lon 70 150'
'set lat 3 60'
'set lev 0'
'set dfile 1'
'define pave1=ave(pdsi.1,t=1,t=600)'
'set dfile 2'
'define pave2=ave(pdsi.2,t=1,t=600)'
'set dfile 3'
'define pave3=ave(pdsi.3,t=1,t=180)'
'define pave=(pave1*50+pave2*50+pave3*15)/115'
'd pave'
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-4-19 09:55:12 | 显示全部楼层
LemonTree007 发表于 2019-4-19 07:52
根据大家的回复大致应该是这个意思,但具体文件我现在没有了,你可以试试看。
'reinit'
'sdfopen D:\gr ...

没有用,还是报错
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-4-20 18:36:18 | 显示全部楼层
hgsndg 发表于 2019-4-19 09:55
没有用,还是报错

错误信息是什么
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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