LUOPING0 2020-06-03
翻译自http://cola.gmu.edu/grads/gadoc/SDFdescriptorfile.html
NetCDF和HDF格式的文件被称作自描述文件(self-describing file, SDF),因为数据和元数据一块保存在同一个文件中。GrADS可以读取NetCDF和HDF格式的文件,只要数据是存储在一个规范网格。HDF格式是非常通用的;GrADS接口仅适用于5-D的(lon/lat/lev/time/ensemble)网格化数据集。 GrADS处理HDF4科学数据集和部分HDF5文件。为了读取自描述文件SDF,GrADS需要一个特定的源数据为了将,GrADS需要一定数量的元数据,从而将数据放置在内部网格空间中。有三种方式可以做到这些:
数据描述文件是自由格式,这意味着每个记录record(文本行)的组成部分都是以空格分隔的,并且可以按任何顺序出现。在解析之前,将删除每个记录开头的前导空格。单个记录的长度不能超过255个字符。每条记录均以特定的条目名称开头,后跟多个参数或关键字,具体取决于条目。
用于NetCDF,HDF-SDS和HDF5文件的描述文件条目为:
条目 | 备注 |
---|---|
DSET | 指向文件的条目. 参见reference page |
DTYPE | 该条目应当是‘netcdf‘ 和‘hdfsds‘ 关键字。 |
(GrADS version 2.0.a7+)对于HDF5,使用‘hdf5_grid‘关键字 | |
TITLE | 在每个GrADS描述符文件中都包含一个描述性TITLE是一种良好的常规做法 |
UNDEF | 此项指定未定义或缺测数据值。第二个参数(可选)是SDF中包含未定义值的属性的名称。当数据文件中的各个变量具有不同的未定义值时,应使用此方法。数据I / O之后,网格中的缺失值将从变量undef转换为整个文件范围的undef(UNDEF记录的第一个参数中的数值)。然后,对GrADS来说,所有变量都具有相同的undef值,即使它们不在SDF中也是如此。属性名称区分大小写,并且假定SDF中所有变量的名称都相同。如果给定的名称与任何属性都不匹配,或者没有给定名称,则将使用文件范围的undef值。 |
例如: UNDEF -9.99e8 _FillValue | |
UNPACK | 该条目用于’打包’的数据变量——即非浮点数据需要通过以下方程转换成浮点数: |
y = x *?scale_factor?+?add_offset | |
仅仅需要scale_factor的属性名。如果你的SDF文件没有一个offset 属性,第二个参数可以被忽略,offset会分配成默认值0.0。属性名区分大小写,并且假定netcdf或hdfsds数据文件中所有变量的名称都相同。如果给定的名称不匹配任何属性,则scale_factor将被分配为1.0,offset将被分配为0.0。打包数据的转换是在应用undef测试之后完成的。 例子: | |
UNPACK scale_factor add_offset | |
UNPACK Slope Intercept | |
OPTIONS | 合理的关键字有‘yrev‘, ‘zrev‘, ‘template‘, 和 ‘365_day_calendar‘。 |
CACHESIZE | (GrADS version 2.0.a8+) 该条目将覆盖用于读取HDF5或NetCDF4文件的缓存的默认大小。它与其他数据类型无关。除非数据文件具有特别大的块,否则不必显式设置缓存大小。请参阅有关compression的文档。 |
PDEF | (GrADS version 1.9b4+) 该功能用于,SDF包含非经纬度的本地投影上的数据(例如兰伯特共形或极坐标立体网格)时。有关更多信息,请参见PDEF documentation。 |
XDEF | 这些条目用于描述SDF中的坐标维数。语法与二进制文件相同。有关更多详细信息,请参见reference page。您可以将ncdump的输出与-c选项一起使用,以获取有关SDF中坐标尺寸的信息。 |
YDEF | |
ZDEF | |
TDEF | |
EDEF | |
VECTORPAIRS | 此项用于显式标识向量分量对。仅当数据位于经纬度以外的本地投影上(即您正在使用PDEF)并且风必须从相对网格方向旋转?旋转到相对地球方向时,才需要VECTORPAIRS条目。(GrADS必须同时检索u和v分量才能进行旋转计算。) 参数是U分量和V分量变量名,用逗号分隔,没有空格。可能会列出一对以上的组件;在这种情况下,两对之间应以空格隔开。 例子: |
VECTORPAIRS ?u,v ?u10,v10 ?uflx,vflx | |
VARS | SDF描述符文件中的变量声明具有一些特殊功能,如下所述。不必为SDF中的所有变量都包括变量声明,只需为希望使用GrADS读取的变量声明变量即可。 varname字段有以下语法: |
through | SDF_name=>grads_name |
ENDVARS | SDF_name必须与SDF中的数据变量名称完全匹配——它可以包含大写字母和非字母数字字符。grads_name?是SDF_name的别名,并且必须少于16个字符,以字母字符开头,并且不能包含任何大写字母或非字母数字字符。如果SDF_name已经满足上面列出的GrADS变量名的条件,则可以省略变量名的别名(即,"SDF_name=>"不位于grads_name之前)。对于dtype hdf5_grid,SDF_name必须包含数据集所属的所有嵌套组的名称(用”/”分隔)(请参见下面的示例)。 levs字段是一个整数,用于指定变量包含的垂直级别的数量。没有Z维度的变量的levs值应为0。没有Z维度的变量的levs值应等于ZDEF语句中指定的znum值。 units字段是变量大小变化的逗号分隔列表。尺寸用x,y,z,t和e表示,并对应于XDEF,YDEF,ZDEF,TDEF和EDEF定义的五个轴。units字段中列出的维度顺序很重要-它必须描述变量的形状,该变量被写入SDF数据文件。对于NetCDF文件,此信息显示在ncdump的输出中,变量名旁边。对于HDF5文件,此信息作为变量的数据空间出现在h5dump的输出中。 例子: |
Height=>hgt?? 17?? t,z,y,x?? Geopotential Height (m) | |
/HDFEOS/GRIDS/ColumnAmountNO2/Data~Fields/CloudFraction=>cf ?15 ?z,y,x ?Cloud Fraction |
dset ^wrf_sample.nc dtype netcdf undef -888 TITLE WRF Output Grid: Time, bottom_top, south_north, west_east pdef 249 249 lcc 26.9628 -125.898 1 1 36.2999 36.2999 -116.0 8000 8000 xdef 270 linear -129 0.1 ydef 200 linear 26 0.1 zdef 25 linear 1 1 tdef 2 linear 11jun2002 3hr vars 4 P=>p 25 t,z,y,x Pressure T=>t 25 t,z,y,x perturbation potential temperature (theta-t0) HGT=>hgt 0 t,y,x terrain height T2=>t2 0 t,y,x temperature at 2m endvars