NetCDF官方读写终端ncdump和ncgen的用法

NetCDF的下载和安装:

官方下载地址:NetCDF-C,截止到本文编辑时,已经发布到4.7.4版本。

这里要下载的内容,其实是NetCDF-C库的一个可执行文件(.exe),如下图所示:

可执行文件的下载位置

可以根据自己电脑的位数需要下载。这里的DAP我还不太清楚是什么意思,但我发现官方读取终端ncdump的命令行提示中,提到了DAP版本支持远程读取文件,可以在命令行中直接输入远程nc文件的URL即可读取。

ncdump官方命令行提示

下载后的可执行文件如下:

下载完成的exe文件

点击后根据提示安装即可,安装路径可以修改为其他盘符,不一定非要装在C盘。

安装完成后如下:

其中ncdump.exe、ncgen.exe以及NetCDF.dll就在bin目录中。


环境变量的配置

1、新建系统变量

变量值为netcdf的安装路径。

新建系统变量netCDF

2、将系统变量netCDF添加到Path中

在Path中新建环境变量,内容如下:

添加Path环境变量

ncdump.exe和ncgen.exe的使用

终端可以从cmd中启用,类似mysql.exe的终端。注意:这里启动cmd需要“以管理员身份运行”

进入cmd界面后,输入ncdump即可看到上面说的命令行提示信息。


NetCDF 的储存格式:

NetCDF 在储存的时候大致上分为两个区域,如同前面在讲到 CDL 档案的时候提到的样子。分为:

档头(header):主要用来记录变数名称、个数与型态;dimention名称、个数与型态;以及相关的说明内容。由于这一部分内容并没有用到实际资料储存的空间,所以使用的空间并不会多出来!

资料区(data):这一部分就是实际资料记录的地方啦!由于这一部分的空间有涉及你当初设定的变数型态,假如你的资料为整数,但是你记录的储存格式为倍精倍数,则这个区域的储存空间无形之中会变的很大!

基本上就仅分为这两个部分!所以你在看档案的时候,看前面就知道后面资料的型态!

ncgen:

这个小程式主要是用来将 CDL 档案转成 NetCDF 档案的工作!假设你已经写了一个 CDL 档案,名称为 netcdf.cdl ,你想将此档案转成 NetCDF 档,则只要下达:

# ncgen  -o  netcdf.ncf  netcdf.cdl

就可以了,语法为: ncgen  -o  [output filename]  [input filename]。

而且 ncgen 亦提供一个不错的选项,亦即将你的 netcdf.cdl 档案转成一个 fortran 程式,则你只要将此 程式 编译并执行后,则可以将 netcdf.cdl 转成 NetCDF 档案!

# ncgen  -f  netcdf.cdl > netcdf.f

上式中 netcdf.f 为 fortran 程式档。不过用此语法需要注意,因为此一语法仅适合比较小的 CDL 档案!

ncdump:

另外一个最有常用到的程式称为 ncdump ,主要的目的在于将 NetCDF 档案资料读成 ASCII 码的资料!由于 NetCDF 储存区分为两段,一个为档头、一个为资料区,若你只想读取资料区的变数使用情况,则可以下达:

# ncdump  -h  netcdf.ncf

则萤幕上将出现 netcdf.ncf 这个档案的档头资料。而如果你想要将所有的档案都输出成为 ASCII 码资料,则直接下达:

# ncdump  netcdf.ncf | more

即可,在上式中, "| more"这个指令作用是将 netcdf.ncf 这个档案以一个画面一个画面的方式展示之意。而如果你想要将画面的资料存成一个 CDL 档案,可以下达:

# ncdump  netcdf.ncf > netcdf.cdl

则程式将直接把 netcdf.ncf 档案转存成一个 netcdf.cdl 的 ASCII 码格式的档案!如此则你将看的到裡头的资料囉!

不过使用的时候要小心,因为一个 Models-3 输出档常常是几百 MB 的大小,如果你将 NetCDF 的资料直接存成 ASCII 码的档案,将耗费很多时间与空间!因此上,除非是你在除错或者是档案很小,否则不是很必要将档案转存成 ASCII 格式的档案!

而若你只想察看 netcdf.ncf 档案裡面一个名为 'TEMP' 的变数的话,你可以下达:

# ncdump  -v  TEMP netcdf.ncf

语法为:ncdump  -v  [变数名称] [档案名称]。这也是一个常用的参数喔!

内容源自:原内容


ncdump的官方命令行说明:

C:\WINDOWS\system32>ncdump

C: \WINDOWS\system32>ncdump

ncdump [-c|-h] [-v ...] [[-b|-f] [c|f]] [-l len] [-n name] [-p n[,n]] [-k] [-x] [-s] [-t|-i] [-g ...] [-w] [-Ln] file

ncdump[-c |-h][-v…][[-b |-f][c | f]][-l len][-n name][-p n[,n]][-k][-x][-s][-t |-i][-g…][-w][-Ln]文件

[-c]            Coordinate variable data and header information

[-c]坐标变量数据和标题信息

[-h]            Header information only, no data

[-h]只有标题信息,没有数据

[-v var1[,...]]  Data for variable(s) <var1>,... only

[-v var1[,…]]变量的数据<var1>,。。。只有

[-b [c|f]]      Brief annotations for C or Fortran indices in data

[-b[c | f]]数据中c或Fortran索引的简要注释

[-f [c|f]]      Full annotations for C or Fortran indices in data

[-f[c | f]]数据中c或Fortran索引的完整注释

[-l len]        Line length maximum in data section (default 80)

[-l len]数据段中的最大行长度(默认值80)

[-n name]        Name for netCDF (default derived from file name)

[-n name]netCDF的名称(默认从文件名派生)

[-p n[,n]]      Display floating-point values with less precision

[-p n[,n]]显示精度较低的浮点值

[-k]            Output kind of netCDF file

[-k]netCDF文件的输出类型

[-s]            Output special (virtual) attributes

[-s]输出特殊(虚拟)属性

[-t]            Output time data as date-time strings

[-t]将时间数据输出为日期时间字符串

[-i]            Output time data as date-time strings with ISO-8601 'T' separator

[-i]使用ISO-8601“T”分隔符将时间数据输出为日期-时间字符串

[-g grp1[,...]]  Data and metadata for group(s) <grp1>,... only

[-g grp1[,…]]组的数据和元数据<grp1>,。。。只有

[-w]            With client-side caching of variables for DAP URLs

[-w]带有DAP url变量的客户端缓存

[-x]            Output XML (NcML) instead of CDL

[-x]输出XML(NcML)而不是CDL

[-Xp]            Unconditionally suppress output of the properties attribute

[-Xp]无条件抑制properties属性的输出

[-Ln]            Set log level to n (>= 0); ignore if logging not enabled.

[-Ln]将日志级别设置为n(>=0);如果未启用日志,则忽略。

file            Name of netCDF file (or URL if DAP access enabled)

netCDF文件的文件名(如果启用了DAP访问,则为URL)

netcdf library version 4.7.2 of Oct 22 2019 11:54:23 $

netcdf库版本4.7.2,2019年10月22日11:54:23$

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。