使用CDO將grads格式的資料轉化成netcdf數據存儲

名詞介紹


  • CDO——Climate Data Operators
  • grads數據格式,這是一種氣象業務及早期模式后處理需要的圖形語言,它的標準包括了一個數據描述文件,一般是xxx.ctl 和一個二進制的存數據流文件(這種文件又細分為C系列語言生成的,和Fortran直接生成的,區別在于前者沒有數據區塊的概念,后者則有一定的分段big_endian)
  • netcdf數據格式:這里就不羅嗦了簡單說就是自描述的數據格式,優點是可移植性好,缺點是大。

為什么要這么干?

其實grads,它能很方便的查看數值模式的輸出結果(圖像化),但是目前很多的高級語言其實對其支持并不友好,因此誕生了將其轉化成netcdf格式的想法。

實現方案

在你的linux系統或者mac系統上使用
上面的特殊條件是因為CDO對windows的兼容并不好,還需要調用額外的linux模擬器。而且推薦在linux系統上進行,大型機上把數據打包轉化好再用本地機子的腳本處理數據。

  1. CDO官網下載適當的版本(我用的1.7.2,因為最新版我接觸的大型機上C++11庫沒有,不想太過麻煩)的tar.gz文件,解壓后進入所得目錄,用下面的代碼段安裝:
//HDF庫是可選的,因為之后數據類型也會用到就順便安裝了,這個和本篇無關。
./configure --prefix "指定安裝目錄" --with-netcdf="你機子上netcdf的根目錄" --with-hdf5="你機子上HDF的根目錄"
  1. 使用命令cdo -b F64 -f nc import_binary "你的CTL文件" “希望輸出的文件.nc” 這樣只要在你的ctl里描述時間變量以及多個模式輸出結果文件程序就會自動打包轉化為一個netcdf文件。(這里面的-b F64 參數是為了將存儲數據的精度擴大,有些模式輸出的結果小數點后有很多位的,默認的選項會報錯好像Error (cdf_put_vara_double) : NetCDF: Numeric conversion not representable
  2. 之后就可以愉快的用python處理數據啦~~~
  3. CDO除了干這一種單一的工作外,官網也有教其他用法,據說有600+的應用命令呢~~
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容