# GrADS ## 檔案格式 使用 ``` ga-> open filename.ctl ``` 以打開 .dat 檔案,或 ``` ga -> sdfopen filename.nc ``` ### .ctl 檔案的內容 ``` DSET ^filename.dat TITLE content of data UNDEF 99999. XDEF 360 LINEAR 0 1 YDEF 91 LINEAR -90 1 ZDEF 3 levels 1000 850 700 TDEF 12 LINEAR 01JAN2010 1mo VARS 3 var1 1 99 var1 content var2 1 99 var2 content var3 1 99 var3 content ENDVARS ``` ### 檔案的內容 在 GrADS 中打開後,使用 ``` ga-> q file 1 ``` 以查看內容,其中 `1` 是檔案被打開的順序。 ## GrADS 腳本(.gs 檔) ### 參考內容 ```GrADS *** Setup *** 'reinit' 'set parea 1 10 1 7.5' 'set grads off' 'open filename.ctl' 'set lat -90 90' 'set lon 0 360' 'set lev 1000 300' 'set t 1 12' *** Calculation *** *** Plotting *** *** The end of script and closing files *** 'close 2'; 'close 1' ``` ## 繪圖 ### 設定繪圖畫面 * `set parea 1 10 1 7.5`:預留好頁面邊框大小。 ### 設定繪圖樣式 * `set gxout shaded`:設定繪圖類型。 | 指令 | 繪圖種類 | | ------- |:------------------ | | `contour` | 等值線 | | `shaded` | 色塊等值線 | | `vector` | 向量圖 | | `stream` | 流線圖<br>使用 `set strmden 0` 來設定流線密度。 | |`grfill` | 格點 | | `line` | 線條圖(一維變數) | * `d [var]`:繪製參數。 * 繪製向量圖 * `d u;v` * `d skip(u,2);skip(v,2)` * `d skip(u,2);skip(v,2);mag(u,v)` * `set arrscl 0.3 15`:設定風標大小(長 0.3 inches,單位 15 m/s)。 * `set [line-options]`:設定線條格式。 * `set ccolor 1`:設定線條顏色。 | 代號 | 常用顏色 | 示範 | | ---------:|:---------- | ------------------------------ | | `0` | background | <font color="#000000">█</font> | | `1` | foreground | <font color="#FFFFFF">█</font> | | `2` | red | <font color="#EF0200">█</font> | | `3` | green | <font color="#00DE00">█</font> | | `4` | dark blue | <font color="#2732F9">█</font> | | `13` | aqua | <font color="#06D28C">█</font> | | `15` | grey | <font color="#7D7D7D">█</font> | | `rainbow` | default | | * `set cthick 1`:設定粗細。 * 設定 colourbar * `'set cmin 0'; 'set cmax 1'; 'set cint 0.1'`:設定顏色間隔。 * `set clevs 0 0.2 0.5 0.8 1.0`:自訂顏色間隔。 * `set mproj nps`:設定投影法。 | 代號 | 常用顏色 | | -------- |:------------------------ | | `latlon` | 麥卡托圓柱投影(預設值) | | `nps` | 北極投影 | ### 座標軸 * `draw`:加入標題或座標軸。 * `draw title Title` * `draw xlab  Xlabel` * `draw ylab  Ylabel` * `set xlint 20`:設定 x(或 y)軸間隔。 * `set xlevs 0 90 180 270`:設定 x(或 y)軸刻度。 * `set vrange 0 1`:設定縱軸範圍(在 `gxout` 設爲 `line` 時)。 * `c`:清除繪圖。 * `printim`:輸出圖片。 * `printim filename.png` * `printim filename.png x1920 y1080`:設定圖片大小。 * `printim filename.png x1920 y1080 white`:將背景設定爲白色。 ### 切割子圖 ```GrADS * UL 'set vpage 0.00 5.50 4.25 8.50' 'set parea 1.00 10.00 1.00 7.50' 'set grads off' * UR 'set vpage 5.50 11.00 4.25 8.50' 'set parea 1.00 10.00 1.00 7.50' 'set grads off' * LL 'set vpage 0.00 5.50 0.00 4.25' 'set parea 1.00 10.00 1.00 7.50' 'set grads off' * LR 'set vpage 5.50 11.00 0.00 4.25' 'set parea 1.00 10.00 1.00 7.50' 'set grads off' ``` #### 繪製共同大標題 ```GrADS 'set vpage 0 11 0 8.5' 'set strsiz 0.25' 'set string 1 c 10 0' 'draw string 5.5 8.15 Title' ``` ## 計算 ### 基本運算 * `define dT = T.1(t=7)-T.2(t=1)`:可指定時間(或經度、緯度)。 ### 平均 * `define B = ave(A,lat=-90,lat=90,-b)`:沿著一條線加權平均。 * `define B = aave(A,lon=0,lon=360,lat=-90,lat=90)`:在一個面積加權平均。 * `define B = ave(A,t=1,t=12,1)`:沿著時間(間隔爲 `1`)進行平均。 `define B = ave(aave(A,lon=0,lon=360,lat=-90,lat=90),t=1,t=12)`:計算整個時空的平均。 ### Maskout and const * `define T2 = maskout(T,T-1)`:將 `T-1`<0 的部分設爲 missing value。 * `define T3 = const(T2,1)`:將 `T2` 中的有效值都設爲 `1`。 * `define T3 = const(T2,0,-u)`:將 `T2` 中的無效值都設爲 `0`。 ### 滑動平均 ```GrADS 'set t 1+6 120-6' 'define TMv = tloop(ave(T,t-6,t+6))' ``` ### 氣候值(年循環、日夜循環) ```GrADS 'set t 1 12' 'define TAc = ave(T,t+0,t=120,12)' 'modify TAc seasonal' 'define TAn = T-TAc' *計算距平值 ``` ### 輸出 .dat 檔 ```GrADS 'set gxout fwrite' 'set fwrite filename.dat' 'd var1' 'd var2' 'disable fwrite' ``` 記得經度首尾不能重疊。 ## 範例 * #### 將閾值以上設爲 1、以下設爲 0。 ```python 'define RH80 = maskout(RH,RH-80)' 'define RH80 = const(RH80b1,1)' 'define RH80 = const(RH80b2,0,-u)' ``` * #### 繪製灰色打點區域 ```GrADS 'set gxout shaded' 'set tile 0 2 3 3 3 16' 'set rgb 20 tile 0' 'set clevs 0' *打點範圍(var>0) 'set ccols -1 20' 'd var' ``` tile=0; pattern=2(打點); minarea=3*3pix; size=3; colour=16(grey).