GrADS 读取NetCDF和HDF的ctl文件 SDF文件的描述文件
2021-02-11 13:17
标签:otto 开发 维度 读取 忽略 数据 页面 支持 field 翻译自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个字符。每条记录均以特定的条目名称开头,后跟多个参数或关键字,具体取决于条目。 GrADS 读取NetCDF和HDF的ctl文件 SDF文件的描述文件 标签:otto 开发 维度 读取 忽略 数据 页面 支持 field 原文地址:https://www.cnblogs.com/jiangleads/p/13040492.html使用GrADS阅读NetCDF和HDF文件
NetCDF和HDF-SDS描述符文件组件
用于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
使用说明
a. 打包数据类型为"short"
b. 用于转换的常量的数据类型是"float"
c. 属性名称是"scale_factor"或"slope",以及"add_offset"或" intercept"
如果SDF中的打包数据不符合此描述,则必须将open命令与完整的描述符\文件一起使用,并在UNPACK条目中提供属性名称。在这种情况下,属性数据类型可以为short,long,float或double。
VAR=>hist0 0 0,y,x First historgram interval for VAR
VAR=>hist1 0 1,y,x Second historgram interval for VAR
VAR=>hist2 0 2,y,x Third histogram interval for VAR
此示例中的另一个选项是用直方图间隔填充未使用的Z轴:
ZDEF 3 linear 1 1
...
VAR=>hist 3 z,y,x VAR Histogram
在这种情况下,对于GrADS来说,变量"hist"的Z值会发生变化,但是用户必须记住,Z值对应于直方图间隔而不是气压层次。后一种技术可以更轻松地分割数据,但不是最准确的表示形式。而且,如果您没有可用的未使用的世界坐标轴(unsued world-coordinate axis),那么您仍然可以使用一种方法来访问数据变量的所有维度。例子
wrf示例ctl文件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
上一篇:css
文章标题:GrADS 读取NetCDF和HDF的ctl文件 SDF文件的描述文件
文章链接:http://soscw.com/index.php/essay/54015.html