学习笔记_ncl_读取nc文件中的变量_制作nc文件的方法

由于生成的文件较大较多,在超算上不方便使用matlab,只好向ncl势力低头
目的是在超算上对相关结果进行第一步简单处理后,下载到pc上再进行其他处理
ncl新手
如果是从已有的nc文件中读取变量到新的nc文件中,直接读就可以,新的nc文件中会直接包括变量之前的属性的

一、从已有数据中读取变量,不对变量进行计算

begin
path = "/public1/home/..." 		;nc文件的路径
files = systemfunc("ls " + path + "*.nc") ;批量读取nc文件 files相当于这个文件夹中所有的nc文件
outdir  = "/public1/home/..." ;新建nc文件的路径
do i=0,36,1      ;do循环 需要注意的是ncl是从0开始的,matlab是从1开始的
	f = addfile(files(i),"r") ;从files中一个一个按顺序读取nc文件,记为f文件
	SM = f->var1(:,2,:,:)  ;从f文件中读取变量,ncdump -h 可以看到nc文件的信息就可以知道变量的维度等信息
	ST = f->var2(:,2,:,:)
	k = i+1982
	outputfn = addfile(outdir+"..."+k+".nc","c") ;创建新的nc文件 c是create的意思
	outputfn->var1 = SM ;将提取出来的变量赋值到新nc文件中的同一变量中
	outputfn->var2 = ST
end do
end

二、从已有数据中读取变量,计算后输入到新nc文件中

建立nc文件的流程

参考文章
教程合集

!用于命名各维度变量名称,@用于设置属性,&用于设置各维度的坐标值
维度是需要定义的
nc文件中的 Var(dim(lat),dim(lon),…)
Var有属性(对变量的单位,名称等的说明)

; read the data
begin
path = "/public1/home/..."
files = systemfunc("ls " + path + "*.nc")
do i=0,36,1
f = addfile(files(i),"r") ;
lat=f->lat
lon=f->lon
SM = f->var1(:,2,:,:)
ST = f->var(:,2,:,:)
; 对SM和ST进行计算
SM_ys_ave=dim_avg_n(SM,0) ;在某一维度做平均dim_avg_n(var,dim)
ST_ys_ave=dim_avg_n(ST,0)
outdir  = "/public1/home/..."
k = i+1982
outputfn = addfile(outdir+"..."+k+".nc","c")
; 设定变量的维度 !后面跟的数字是指定维度的名称 注:0开始,这里有一点注意之前读取数据的时候在一个维度仅读取一个数据,那么之后这个变量就没有这一维度了,也就是size(var)只有大于1(包括求平均,这一维度也不算了)
SM_ys_ave!0 = "lat"
SM_ys_ave!1 = "lon"
ST_ys_ave!0 = "lat"
ST_ys_ave!1 = "lon"
; 设定每一个维度的值
ST_ys_ave&lat = lat
ST_ys_ave&lon = lon
SM_ys_ave&lat = lat
SM_ys_ave&lon = lon
; 设定每个变量的属性
SM_ys_ave@long_name = "soil liquid water (vegetated landunits only)"
SM_ys_ave@units = "kg/m2"
SM_ys_ave@cell_methods = "time: mean"
SM_ys_ave@_FillValue = 1.e+36
SM_ys_ave@missing_value = 1.e+36
ST_ys_ave@long_name = "soil temperature (vegetated landunits only)"
ST_ys_ave@units = "K"
ST_ys_ave@cell_methods = "time: mean"
ST_ys_ave@_FillValue = 1.e+36
ST_ys_ave@missing_value = 1.e+36
;outputfn->lat=lat ;很神奇的是这一步不写也是可以的 在新的nc文件中也有lat和lon变量
;outputfn->lon=lon 
outputfn->var1=SM_ys_ave
outputfn->var2=ST_ys_ave
end do
end

和matlab对比,ncl对于nc文件的设定是相对简单的,就很快乐~
很难的是思路上和写法上转换比较困难

  • 1
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值