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 可以控制压缩等级。