6.3 写netCDF文件

6.3.1 文件名格式

GMT生成网格数据时默认使用 nf 格式(默认网格文件格式由GMT参数 IO_GRIDFILE_FORMAT 控制)。可以通过在网格文件名后加上额外的信息以指定网格文件的格式。网格文件的文件名格式为:

<name>[=<ID>][+s<scale>][+o<offset>][+n<nan>]
  • <name> 是网格文件名

  • <ID> 是写网格文件时要使用的网格文件格式

  • <offset> 将数据加上一个常数 <offset>,默认值为0

  • <scale> 将数据乘以比例因子 <scale>,默认值为1

  • <nan> 表明将文件中值为 <nan> 认为是NaN

<scale><offset> 都可以取为 a,表明由程序自动决定比例因子和偏移量的值。在写网格文件时,会先加上偏移量,再乘以比例因子。

6.3.2 分块与压缩

出于性能的考虑,GMT在输出超过16384个网格单元的网格文件时,会启用分块功能。所谓分块,即数据不是按照一行一行序列存储的,而是将整个网格分成若干个区块,然后依次存储每个区块的数据。

在读取数据时,若只需要读取数据的一部分,netCDF只需要读取相应的区块即可,无需读取整个数据。

由于数据的压缩和解压比磁盘IO要快,因而可以对netCDF数据进行压缩,使得磁盘占用更少,IO负载更少。netCDF的压缩可以分为若干等级,压缩级别越高,文件越小,读写数据越快,但压缩/解压越耗时。通常,压缩级别取1到3效果比较好。

GMT参数 IO_NC4_CHUNK_SIZE 可以控制分块的大小, IO_NC4_DEFLATION_LEVEL 可以控制压缩等级。