登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 river 于 2021-9-2 14:55 编辑
好久之前发过一个NC资料描述文件及其批量描述的帖子,但那会儿那个ctl是个相对简写的描述文件,只能使用xdfopen命令来打开,而且里面对于维数、时间、变量等描述的写法与我们平时熟知常用的写法有些不一致,用起来难免有一些问题。所以今天就给大家介绍nc资料(即NetCDF和HDF类的资料) 的完整描述文件的写法,以方便很多人需要的批量描述。
首先要了解完整描述文件需要的要素:
绿色的是我们平时都基本没用过的;红色是简单的解释。如果有兴趣仔细研究一下这个ctl各个要素的意思以及注意事项,那就去看官方文档 吧,找到[size=13.3333px]Elements点进去有详细介绍。
DSET
DTYPE
TITLE
UNPACK :This entry is used for data variables that are 'packed' -- i.e. non-float data that need to be converted to float by applying the following formula: y = x * scale_factor + add_offset
其实就是在写入数据的过程当中为了记录的方便、控制文件的大小、读取的便利的因素,把数据转换成了整形数,也就是扩大了一定的倍数还加上了某一个数值。这时候就需要在描述文件中告诉grads我这些数字是这么来的,你画图的时候得给我转化回去。就是这么个作用
OPTIONS :Valid keywords are 'yrev', 'zrev', 'template', and '365_day_calendar'.CACHESIZE(GrADS version 2.0.a8+)
PDEF :(GrADS version 1.9b4+) This is used when the SDF contains data on a native projection other than lat/lon, such as a lambert conformal or polar stereographic grid.
XDEF
YDEF
ZDEF
TDEF
EDEF
VECTORPAIRS
VARS
ENDVARS(当然这些需要要素是包括了所有可能的NC类数据列出来的,针对不同的NC类数据有些要素不是必须的。比如我下面说的NC资料的描述文件就不需要PDEF、EDEF、VECTORPAIRS) 那么要给NC类的资料写一个完整的可以用open直接打开的描述文件需要上面很多信息,我怎么才能得到那些信息呢,比如UNPACK 的信息上哪去看呢? 其实grads已经给我们提供了方法,这个又分为两种情况: 1、可以直接打开的nc资料,使用sdfopen命令打开之后,继续输入q attr ,就会看到上面我们需要的信息。比如我打开hgt.1948.nc资料,然后输入q attr就会出现下面的信息,红色框中的就是我们需要的UNPACK 数据
2、就是直接用grads命令sdfopen打不开的资料,比如兰溪介绍过的“SDF file has no discernable X coordinate” 类型的资料。grads也提供了办法,grads1.9之前的版本就可以用 Ncdump 、 Ncdump-dap 、 Ncdump-hdf 、 Ncdump-nc4 等命令,针对不同的资料选择合适的命令就可以。比如我的资料 hgt.1948.nc 也可以用这几个命令查看上述信息 只需要在grads中输入 !ncdump -h 路径/hgt.1948.nc 然后回车如下图:黄色部分就是我们需要的 UNPACK 数据了
需要说明的是上面的一些命令在新版opengrads里面是没有的,但是你可以从旧版的安装文件中提取出相应的 Ncdump.exe 、 Ncdump-dap.exe 、 Ncdump-hdf.exe 、 Ncdump-nc4.exe 等文件放在相应的文件夹里就可以了,也就是和girb2ctl.exe、g2ctl.exe同一个文件夹下。各个命令的用法就是直接在grads里面输入!+相应的命令就可以看到帮助信息了。 比如我输入!nudump 回车后就出来下图
好了需要的信息都有了,那么完整的ctl也就可以出来了,如下: dset ^hgt.1948.nc title mean daily NMC Reanalysis (1948) dtype netcdf undef 32766 unpack scale_factor add_offset 1 32066 options yrev * yrev表示y轴反向 xdef 144 linear 0 2.5 ydef 73 linear -90 2.5 zdef 17 levels 1000 925 850 700 600 500 400 300 250 200 150 100 70 50 30 20 10 tdef 366 linear 00Z01Jan1948 1440mn vars 1 hgt 17 t,z,y,x mean Daily Geopotential height endvars
用open命令打开来看看是不是和原始数据出的图一模一样呢!肯定是一样的啦
说明几点:1、y轴反不反向取决于资料的排列方式,如果是按照grads的资料顺序存放那就不需要y轴反向的选项了。之所以我这个用了这个选项是因为它数据南北方向排列顺序与grads的要求是相反的。从它的详细资料里是可以看出来的,如下图黄色部分,“degrees_north"表示的是向北为正的意思,即北纬为正,南纬为负。再看下面的一句里面有90.f ,-90.f,意思是资料在纬度上是从90到-90,就是纬度方向的资料是从北往南排列的,这恰好和grads要求的由南往北是反过来的,所以要加上y轴反向的选项。
2、变量名称后面的描述要注意,和平时不太一样的,它是和资料排列紧密相关的,多东西少东西都会导致错误,写法针对不同资料是不同的。它表示的意思是hgt这个变量一共有17层,排列顺序是 t,z,y,x 。还想了解的更加详细就去上面的官方文档吧。
有人留言说找不到相关命令,那我就上传一份吧,需要的下载
ncdump相关命令.zip
(5.2 MB, 下载次数: 672)
|