- 积分
- 678
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2014-11-21
- 最后登录
- 1970-1-1
|
NCL
系统平台: |
|
问题截图: |
- |
问题概况: |
在NCl中将wrf_user_getvar获取的变量写入到wrfout.nc文件中,网上有一些教程,但是试过了都没有用 |
我看过提问的智慧: |
看过 |
自己思考时长(天): |
2 |
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
利用NCl的wrf_user_getvar命令可以在wrfout.nc文件中提取很多有用的变量来画图,最近想学习matlab画图,但是matlab却无法简单的获取这些变量,所以想在NCl中将wrf_user_getvar获取的变量写入到wrfout.nc文件中,网上有一些教程,但是试过了都没有用,也是刚刚接触这些,不太懂,望各位指导。
我把教程里的贴上来,
3.4 写 netCDF/HDF 文件
NCL有两种写netCDF/HDF文件的方法,一种是简单方法,另一种是传统方法。
简单方法:
直接用“.nc”替代“.hdf”就可以生成HDF文件:
fo = addfile(“foo.nc”,”c”)
fo->X = x
fo->Y = y
要生成一个无限制的维,通常是time,就要在输出值之前加上下面一行代码:
filedimdef(fo,”time”,-1,True)
传统方法:
该方法要求用户在输出之前明确定义整个文件的内容。预先定义netCDF文件:
filevardef: 定义变量名
filevarttdef: 将一个变量的属性复制给一个或多个文件变量
filedimdef: 定义维
fileattdef: 将一个变量属性复制给一个文件作为全局属性
setfileoption 一些选项能显著改进性能
在下面的例子中,假定变量time,lat,lon,T存在于存储器内。当写netCDF文件时,变量T被命名为TMP.
fout = addfile("out.nc","c")
; create global attributes (生成全局属性)
fileAtt= True
fileAtt@title= "Sample"
fileAtt@Conventions= "None"
fileAtt@creation_date= systemfunc("date")
setfileoption(fout,“DefineMode”,True) ; optional
fileattdef(fout,fileAtt) ; predefine coordinate variables (预先定义坐标变量)
dimNames = (/"time","lat","lon"/)
dimSizes = (/-1,nlat,nlon/) ; -1 means unspecified
dimUnlim = (/True,False,False/)
; predefine names, type, dimensions (预先定义名称,类型,维数)
; explicit dimension naming or getvardims can be used (明确维名称,或者可以用getvardims命令)
filedimdef(fout,dimNames,dimSizes,dimUnlim)
filevardef(fout,"time",typeof(time),getvardims(time))
filevardef(fout,"lat" ,typeof(lat) ,"lat")
filevardef(fout,"lon" ,"float" ,"lon")
filevardef(fout,"TMP" ,typeof(T) , getvardims(T) )
; predefine each variable’s attributes (预先定义每个变量的属性)
filevarattdef(fout,"time",time)
filevarattdef(fout,"lat" ,lat)
filevarattdef(fout,"lon" ,lon)
filevarattdef(fout,"TMP" ,T)
setfileoption(fout,”SuppressDefineMode”,False) ; optional
; output values only (输出值)[use (/... /) to strip metadata]
fout->time=(/time/)
fout->lat=(/lat/)
fout->lon=(/lon/)
fout->TMP=(/T/) ; T in script; TMP on file
|
|