寫netCDF文件

文件名格式

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,表明由程序自動決定比例因子和偏移量的值。在寫網格檔時,會先加上偏移量,再乘以比例因子。

分塊與壓縮

出於性能的考慮,GMT在輸出超過16384個網格單元的網格檔時,會啓用分塊功能。所謂分塊,即數據不是按照一行一行序列存儲的,而是將整個網格分成若干個區塊,然後依次存儲每個區塊的數據。

在讀取數據時,若只需要讀取數據的一部分,netCDF只需要讀取相應的區塊即可,無需讀取整個數據。

由於數據的壓縮和解壓比磁盤IO要快,因而可以對netCDF數據進行壓縮,使得磁盤佔用更少,IO負載更少。netCDF的壓縮可以分爲若干等級,壓縮級別越高,文件越小,讀寫數據越快,但壓縮/解壓越耗時。通常,壓縮級別取1到3效果比較好。

GMT參數 IO_NC4_CHUNK_SIZE 可以控制分塊的大小, IO_NC4_DEFLATION_LEVEL 可以控制壓縮等級。