- 积分
- 1014
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2017-2-5
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
想要以NetCDF格式保留滤波后的数据,但在数据处理之后如果像之前合并多年数据那样直接写入,无法保留时间维度信息,然而我还想把这个数据保存好以便后续使用,因此采取了用函数事先定义的方法,在这里记录一下。
读入文件:
- f1 = addfile(pt+"pres.sfc.1979-2019.nc", "r")
- pres = f1->pres/100
- printVarSummary(pres)
- lat = f1->lat
- lon = f1->lon
- time = f1->time
- nlat = dimsizes(lat)
- nlon = dimsizes(lon)
复制代码 进行一些数据处理(进行7-90天带通滤波)
- ihp = 2 ; band pass
- sigma = 1.0 ; Lanczos sigma
- nWgt = 201 ; loose 100 each end
- fca = 1./90. ; start freq
- fcb = 1./7. ; last freq
- wgt = filwgts_lanczos (nWgt, ihp, fca, fcb, sigma )
-
- plcz = wgt_runave_n_Wrap(pres, wgt, 0, 0) ; 7-90 day
复制代码 输出变量
- system("rm -rf ls F:/data/NCAR-Reanalysis1/pres.sfc.1979-2019_lb.nc") ;删除可能存在的文件
- fout = addfile("F:/data/NCAR-Reanalysis1/pres.sfc.1979-2019_lb.nc","c") ;创建文件
- setfileoption(fout, "DefineMode", True)
- ;定义文件的全局属性
- fAtt = True
- fAtt@title = "NetCDF output using method 2"
- fAtt@creation_date = systemfunc("date")
- fileattdef(fout, fAtt)
- ;定义坐标变量
- dimNames = (/ "time","lat","lon"/) ;命名维
- dimSizes = (/ -1, nlat, nlon/) ;维大小,-1表示未知
- dimUnlim = (/ True, False,False/) ;定义是否不限定维
- filedimdef(fout, dimNames, dimSizes, dimUnlim)
- ;定义变量名,变量属性和维度
- filevardef(fout, "time", typeof(time), getVarDimNames(time))
- filevardef(fout, "lat", typeof(lat), getVarDimNames(lat))
- filevardef(fout, "lon", typeof(lon), getVarDimNames(lon))
- filevardef(fout, "plcz", "float", (/ "time","lat","lon"/))
- ;给每个变量复制属性
- filevarattdef(fout, "time", time)
- filevarattdef(fout, "lat", lat)
- filevarattdef(fout, "lon", lon)
- filevarattdef(fout, "plcz", plcz)
- ;将数据写入文件,仅需写入数据,变量属性已经在前面预先写入文件
- fout->time = (/ time /) ;用(/.../) 去除变量的元数据
- fout->lat = (/ lat /)
- fout->lon = (/ lon /)
- fout->plcz = (/ plcz /)
复制代码
|
|