第四章-输入输出

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
http://www.ncl.ucar.edu/Document/Tools/

ncl_convert2nc gribFile(s) OPTIONS 命令 将GRIB/HDF/SHAPE 文档转换至netCDF 输出的文档名和出入一致,当以.nc为后缀名 ncl_convert2nc –h 提供使用的选项信息 ncl_convert2nc foo.grb 生成 foo.nc ncl_convert2nc foo.hdf –L –nc4c –cl 1 -L (文件> 2GB); -nc4c (netCDF4); -cl 1 (compression lvl 1)

ncl_filedump file_name.[grb/nc/hdf/hdfeos]
-
结果可输出至文件中或通过Unix 的重定向/通道 ncl_filedump foo.grb > foo.txt [传至文档] ncl_filedump foo.hdf | less [传至屏幕]
ncl_convert2nc

配合options使用的命令
对任何支持的数据内容可提供文字的描述信息 − 其作用类似于Unidata’s ncdump -h − file_name 在命令行中必须有一个后缀
− − −
.nc .grb .hdf .hdfeos .he5 .h5 .ccm .shp
后缀仅起着识别作用, 其他情况下不必如此

addfile
• •
(1 of 3)
打开一个支持的格式 文件变量名为 netCDF (Grib, HDF, HDF-EOS) • f = addfile (file_name.ext, status )
file_name => 任何符合规则的文件名; 字符 − ext => 识别文件类型; 字符

netCDF: “nc” or “cdf” [读/写] HDF: "hdf" , "hdfeos”, "h5”, "he5" [读/写] GRIB: “grb” , “grib” [仅读; GRIB1 或 GRIB2] CCMHT: "ccm" [仅读] SHAPE (GIS): ”shp" [仅读]
setfileoption
www.ncl.ucar.edu/Document/Functions/Built_in/setfileoption.shtml
可以指定“文件-格式-specific”的选项 netCDF, GRIB 和Binary options [目前支持] 比如 写入netCDF setfileoption(f, "DefineMode" ,True) setfileoption("nc","Format","LargeFile") setfileoption("nc","Format",”netCDF4Classic") 读取GRIB setfileoption("grb" ,"ThinnedGridInterpolation", "cubic") setfileoption("grb", "InitialTimeCoordinateType" \ , "Numeric") 读/写Binary setfileoption("bin", "ReadByteOrder", "LittleEndian") setfileoption("bin", “WriteByteOrder", “BigEndian")
fout = addfile(“out.nc” , “c”) ; create 文件用以输出 fout@title = “I/O Example 1” ; 给文件加上一个全域属性 ;---------------------------------------------;输出变量: ncrcat/ncks –v U in.nc out.nc ;----------------------------------------------filedimdef (fo, “time”, -1, True) ; 生成ud(无限制的维) fout->U2 = u ; 输出变量 u 至 nc 文档 end ; 仅在begin使用时使用 注意: 该生成netCDF的方法较为简单. 虽处理较慢,但 较常使用.
举例: 查询文件, 系统命令
;---------------------------------------------------------------------------; 打开文档, 产生变量名数组 ;---------------------------------------------------------------------------fin = addfile ("./in.nc", "r") vars = (/“U”, “V”, “T” /) ; 手动指定 nvars = dimsizes (vars) ; nvars = 3 ;---------------------------------------------------------------------------; 在生成文档前,用system移除相应文档(以防出错) ;---------------------------------------------------------------------------fname = “out.nc” system("/bin/rm –f ”+fname) fout = addfile(fname, "c") ;---------------------------------------------------------------------------; 循环, 查询文件中是否有相应变量, 后输出至netCDF ;---------------------------------------------------------------------------do n=0,nvars-1 if (isfilevar(fin, vars(n))) then fout->$vars(n)$ = fin->$vars(n)$ end if end do
从支持的文件中读取变量
u = f->U
读取variable 以及all meta data 至内存中 − 在 -> 符号的左和右边不允许有空格 [ 否者有fatal error] − 用“$” 表示变量名(必须是string型)

f = addfile ("foo.grb", "r") vNam = getfilevarnames (f) ; 文件中所有变量 或者 vNam = (/ “U”, ”T“ /) ; 手动指定 do n=0,dimsizes(vNam)-1 x = f->$vNam(n)$ ; $..$ 替代字符 ..... end do
addfile: OPeNDAP

− − −
(3 of 3)
OPeNDAP enabled: Open Source Project for Network Data Access Protocol
通过网络读取一个远程文件 文件必须放在一个OPeNDAP 服务器上[最多64 文件] 目前只有一些特定的操作系统支持. NCL可以在支持的系统 上进行一些OPeNDAP操作. 可能需要注册. 可使用 addfile, addfiles, 和isfilepresent
−getfilevardimsizes −getfilevartypes −isfilevar −isfilevaratt −isfilevardim −isfilevarcoord

varNames = getfilevarnames (fin) if (isfilevarcoord(fin, "U", "lat") ) then … end if

status [读/写 状态] "r", "c", "w" −f

指向一个单独的文件 也许有属性 (文件属性或者全域属性)
Байду номын сангаас
http://www.ncl.ucar.edu/Document/Manuals/Ref_Manual/NclFormatSupport.shtml
addfile (2 of 3)


ASCII
− −
fortran or C to read; call from NCL
ncl_filedump
http://www.ncl.ucar.edu/Document/Tools/ncl_filedump.shtml

ncl_filedump [-c] [-v var1[,…]] [–h] file_name

Binary
− −
sequential [F: open(_,form="unformatted", access="sequential")] flat/direct [F: open(_,form="unformatted",access=direct",recl=_)] [C: write] 行列形式排列的数据 ‘complicated’ ascii 格式: 用NCL string (‘str_*’) functions
u = (/ f->U /) - 仅读取数据和_FillValue属性
举例: 打开, 读, 输出netCDF
begin ; 可选 ;--------------------------------------------fin = addfile (“in.nc, ”r“) ; 打开文档并 read 数据 u = fin->U ; 提取一个变量 (time,lev,lat,lon)
第一章 前言及简介 第二章 NCL变量及基本语法 第三章 数据处理 第四章 文件输入输出 第五章 绘图
I/O 格式

支持的格式
− − − − − − −
[ 不需知道文件的结构]
netCDF-3/4 HDF4/H5 HDF-EOS GRIB-1/2 CCMHT Shapefile 6.1.0
[network Common Data Form] [Hierarchical Data Format (Scientific Data Set only) ] [Earth Observing System; HDF4 and HDF5] [Grid in Binary; WMO standard; NCEP, ECMWF] [CCM History Tape; COS blocked only; ccm2nc] [ESRI: geospatial vector data format GIS] near complete netCDF4, HDF5

url_cdc = "http://www.cdc.noaa.gov/cgi-bin/opendap/nph-nc/Datasets/" fPath = “ncep.reanalysis/pressure/air.1948.nc" if ( isfilepresent(url_cdc+fPath) ) then f = addfile ( url_cdc + fPath, "r") vNames = getfilevarnames(f) if ( any (vNames .eq. ”T”)) then t = f->T end if end if

举例: 打开一个单独的文档 − fin = addfile ("0005-12.nc" , "r") − fout = addfile ("./ncOutput.nc" , "c") − fio = addfile ("/tmp/shea/sample.hdf" , "w") − g = addfile ("/dss/dsxxx/Y12345.grb", "r" ) − s = addfile ("foo.shp" , ”r") 很多函数用以查询支持文件的内容 −getfilevarnames diri = "/fs/cgd/data0/shea/GRIB/" −getfilevardims fili = ”narr_2000121106” −getfilevaratts fin = addfile(diri+fili+".grb" , " r ")
相关文档
最新文档