本代码参考了施宁老师《NCL数据处理与绘图实习教程》一书,按实际情况有所增删。主要效果为合成ENSO年厄尔尼诺和拉尼娜海温异常,并进行t检验,将置信度为0.05的区域打点。(由于没有专门的NCL高亮代码块,特别注意分号后面全部为注释部分)。
另外,代码书写过程中断断续续,导致每个步骤独立性很强。重复进行的步骤可以缩减,例如在绘图部分可以直接res2=True/res2=res1,而后更改图名即可。错处欢迎指正~~
year=ispan(1940,2018,1)
it_s=194012;;海温数据
it_e=201811
;;;;;;;;;;;;;;;;;;;;;;;;;;;read data;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;HadIsst——1870-2019
f_sst=addfile("/data/home//Data/SST/sst.mon.mean.nc","r")
time =f_sst->time;;读取日期数据
YYYYMM=cd_calendar(time,-1);;转换为公历日期
rec_s=ind(it_s.eq.YYYYMM);;开始日期的记录号
rec_e=ind(it_e.eq.YYYYMM);;终止日期的记录号
sst=f_sst->sst
sst_34=sst(rec_s:rec_e,:,:);;截取开始——终止的时段资料
sst_DJF=month_to_season(sst_34, "JFM");求JFM的季节平均
; printVarSummary(sst_34)
copy_VarMeta(sst_34(0,:,:),sst_DJF(0,:,:));copy_VarMeta(var_from, var_to)将前者的属性给后者
sst_DJF!0="year";;;第一维的变量名字是year
sst_DJF&year=year;;
;printVarSummary(sst_DJF)
sst_ano=dim_rmvmean_n_Wrap(sst_DJF,0)
copy_VarCoords(sst_DJF, sst_ano)
ensoi=wgt_areaave(sst_DJF(:,{
-5:5},{
190:240}),1.0,1.0,0)
;;0表示仅用非缺省数值计算
;;标准化函数
ensoi=dim_standardize(ensoi, 1)
; ;;1表示标准化时除以[N],1表示除以[N-1]
;printVarSummary(ensoi)
;;;;;;;;;;;;;;;;;;;;;;composite;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
irec_positive=ind