February 01, 2013

GrADS的資料結構

GrADS 主要就是由 一個或一組 binary 格式的資料檔(data)與一個(或一組)ASCII 格式的控制檔(contorl file) 類似檔頭 (Header)的功用,描述與指示這組資料的基本資訊。基本上資料結構在 GrADS 的官網上就說的很詳細了,我硬是把他畫了一張圖,讓大家可以比較容易清楚明白,
由GrADS 產生出來或是由其他程式產生出來讓GrADS可讀的資料應如何排列 -- 基本上是為下一篇 IDL output to GrADS binary做準備。

當 GrADS 讀取資料時,他是以 X (通常是經度, Longitude)- Y (通常是緯度, Latitude) 同時讀取,稱為"一筆"資料。X軸由左而右(0 度 - 360度),Y 軸由下而上(南緯90度 - 北緯90度)。如果這筆資料有垂直向則加上 Z 軸,這樣就是一筆3D資料。資料寫成矩陣 (array) 的形式就是: data(X, Y, Z)
如果時間軸的話,再加上時間 (T),那資料的arry 就成了: data(X, Y, Z, T)。

以上應該還算好理解,如果這筆資料有兩個以上變數(Var)各有X, Y, Z呢?
像第一張圖所標示的,GrADS 的處理原則是在同一時間內,先把第一個時間內(T1)的第一個變量(Var1)X, Y, Z處理完,再處理第二變量(Var2)的 X, Y, Z...,直到第N個變量(Var N)的X, Y, Z都處理完。資料的arry 寫成 data(X, Y, Z, Var)。

(1) 單一時間內,GrADS 處理多種變量(Vars)的順序

如果有時間軸的話,就如上規則先處理第一個時間(T1)的變量,再繼續讀第二個時間(T2)的第一個變量(Var 1),直到Var N。
然後再處理第三個時間...直到第 N個時間,第二張圖所示。所以他的變量的arry就是 data(X, Y, Z, Var, T)。

較新版本的GrADS,還加上另一維度 - 也就是 ensemble (E, 系集合),如果前面的五維不夠用的話,可以在加上這第六維,
通常用於預報數據除了實際初始時間 (T),再加上預報時間(Lead Time)的情況。詳細ctl 文件維度 E 的寫法,請看GrADS 官網說明。
 
(2) 加上系集合與時間維度後,GrADS 處理數據的規則

瞭解了GrADS binary 的資料結構,我們就可以很輕鬆地用 Fortran 、IDL或是Matlab 等軟體讀取或產生這樣的檔案,不但同時可以讓 GrADS 的使用者使用,也可以讓我們在處理數據時,第一時間快速地畫出圖,檢驗一下我們所下的數據對還是不對,達到充分運用兩套工具,以增進我們工作效能的目的。

0 comments:

Post a Comment

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free WordPress Themes | Blogger Theme by Lasantha - Premium Blogger Templates | Affiliate Network Reviews