20
文文文文文文文文文文文文文 -NCAR Graphics NCAR Graphics 氣氣氣氣氣氣氣氣 Jien-Yi Tu & Yin-Ming Cho @ C.C.U. (2000/3/7) NCAR Graphics 為為為為為為為為為為為 NCAR 為為為為為為為為為為為為為為為為為為為為 為為為為為為為為為為為為為為為為為為為為為為為為為為為為為為為為 )一體,體一,。體,、、、、 為為為為為為為為為為為為為為 、體,一體。,一(體),一體 GrADS 為為為為 ()。, NCAR Graphic 為為為為為為為為為為為 NCAR Graphic User Guides為 35

Ncar Graphics

Embed Size (px)

Citation preview

Page 1: Ncar Graphics

文化大學大氣系電腦使用手冊 -NCAR Graphics

NCAR Graphics 氣象繪圖基礎教材

Jien-Yi Tu & Yin-Ming Cho @ C.C.U. (2000/3/7)

NCAR Graphics 為美國國家大氣研究中心(NCAR)所發展之一套功能強大的電腦繪圖軟體,也是目前氣象界最常使用的繪圖軟體之一,重要性可想而知。由於其主要是專為氣象界設計的繪圖軟體,因此舉凡等值線、流線、風標、地圖投影、天氣符號、天氣圖、彩色繪圖等都可以透過此軟體繪製,因此是一個常被利用軟體。對使用者而言,唯一的缺點就是太過複雜(相對於其他繪圖軟體而言),所以近年來有慢慢被另一個軟體 GrADS(稍後介紹)取代的趨勢。雖然如此,我們還是在這裡針對 NCAR Graphic 中較簡單且常使用到的部份作簡單

35

Page 2: Ncar Graphics

文化大學大氣系電腦使用手冊 -NCAR Graphics 的介紹,其他若有需要請自行翻閱 NCAR Graphic User Guides。

36

Page 3: Ncar Graphics

文化大學大氣系電腦使用手冊 -NCAR Graphics ◎NCAR 的成圖程序:(1) 於工作站上先編輯一個含有 NCAR 氣象繪圖的程式(如:plot.f)

(2) compiler 程 式 → ncargf77 主 檔 名 (plot.f) -o 執 行 檔 檔 名

(ex:plot.exe)。使其產生一個執行檔。(亦可直接執行 ncargf77 檔名,此

時會產生一個內定的執行檔 → a.out)

(3) 執行程式 → 打執行檔檔名(plot.exe) (若沒打 -o _____.exe,則打系統內

定的執行檔『a.out』做執行的工作)

(4) % ls→ 則可看到於目錄底下會出現 gmeta 這個圖形檔案。

(5) 若要秀出圖形,則打『idt gmeta』,即可看到圖形。若打 idt& 則表示放到背

景處理。

【註】:當程式編輯完、執行後會產生一個圖形檔,系統內訂為"gmeta",因此若欲

保留此圖檔,需於執行另一個程式時先將檔名更改,否則此檔案會被覆蓋掉。

◎我們常可以看見幾種常見的圖形,如 postscript、gif、gmeta 等,當你看到這些圖

檔時要如何看它呢?底下將告訴大家:

(a)postscript 的 圖 形 (*.ps) , 一 般 用 ghostview ( 即 『 gv 』 ) 看 , 如 : gv

plot.ps,而 xv3.0 版亦可看 ps 的檔案。

(b)*.cgm(或 gmeta)的圖形用『idt』看,如:idt gmeta or idt sst.cgm。

(c)*.gif 的圖形用 xview (即『xv』) 看,如:xv sst.gif。若要看動畫則下

『animate』的指令,如 animate 970101*。(只有 gif 檔可看動畫)

【注意】:圖形檔不可用 lpr 來列印。

Ghostview 看圖軟體介面

37

Page 4: Ncar Graphics

文化大學大氣系電腦使用手冊 -NCAR Graphics

IDT 看圖軟體介面

◎在寫 NCAR Graphic 程式時有五行一定要寫:1.call opngks → 將 ncar 核心程式打開。(放在第一行)

2.call set → 訂定座標。

3.call perim → 若無此 call 則框框有時會無法出現。

38

Page 5: Ncar Graphics

文化大學大氣系電腦使用手冊 -NCAR Graphics 4.call frame → 將劃好的圖送出,若沒有此行,則無法將圖形送出。若放錯位置

則有可能會將數個圖形疊在一起。

5.call clsgks → 將 ncar 核心程式關閉。(放在最後一行)

【註】:gks=Graphical Kernel System。一般來說,call frame 與 call clsgks 都

放到最後寫。

39

Page 6: Ncar Graphics

文化大學大氣系電腦使用手冊 -NCAR Graphics

◎訂定座標軸轉換:call set(al , ar , ab , at , bl , br , bb , bt , n) ↓ ↓ ↓

A B C

A 為 ncar 系統內定之 x、y 座標軸,其範圍介於 0~1,需用實數。

B 為 user 自訂之 x 與 y 座標軸,其值亦需用實數,此數可正可負。

A 與 B 皆有兩組,前者為 X 軸之起迄點,後者為 Y 軸之起迄點。

C 為定義 ncar 系統座標和 user 座標之轉換形式,用整數。

1 表兩者成線性關係。

2 表 x 軸呈線性變化,y 軸呈 log 變化。

3 表 x 軸呈 log 變化,y 軸呈線性變化。

4 表 x、y 軸均成 log 變化。

【註】:l→左邊界、r→右邊界、b→下邊界、t→上邊界。

call set(0.,1.,0.,1.,0.,1.,0.,1.,1)表 user 所取的範圍與系統相同

Ex:call set (0.5 , 0.9 , 0.3 , 0.7 , 0. , 28. , 0. , 100. , 1)

表所取的 monitor 範圍,x 軸是從 0.5~0.9,y 軸是從 0.3~0.7,而在此範圍

內,x 軸大小從 0~28,y 軸大小則由 0~100。若為(-10. , 10. , -100. ,

200.)則表 x 軸之範圍從-10~10,而 y 軸之範圍則由-100~200。

40

Page 7: Ncar Graphics

文化大學大氣系電腦使用手冊 -NCAR Graphics

41

Page 8: Ncar Graphics

文化大學大氣系電腦使用手冊 -NCAR Graphics

◎劃線:call line(x y x y1 1 2 2, , , ) →可放在 Do 迴圈中。 A 點座標 B 點座標

其中 x 與 y 皆需用實數,且可用變數來表示。

ex:(1) call line (2.,5.,10.,10.)

(2) do i=1,10 long=120.0+0.5×(i-1) lat1=20. lat2=30. call line(long,lat1,long,lat2) enddo

◎打點:call point(x,y)→可放在 Do 迴圈中。

其中 x 與 y 皆需用實數,且可用變數表示。

ex:(1) call point(10.,20.)

(2) real data(2,10)do i=1,10

xx = data(1,i)yy = data(2,i)call point(xx,yy)

enddo

◎劃曲線:call curve(x,y,np)→不可放在 Do 迴圈中。

其中 x 與 y分別為放資料之陣列名稱,而 np 則為資料總點數。

ex:real px(20),py(20)

do i =1,20px(i) = i ! for xpy(i) = i ! for y

enddo

42

Page 9: Ncar Graphics

文化大學大氣系電腦使用手冊 -NCAR Graphics call curve(px , py , 20)

【法二】:call GSLN (type) ==> 決定型式

call GPL (np,px,py) ==> 畫線

call GSLN (type) ==> 還原型式

其中 type = 1 = solid line

type = 2 = dashed linetype = 3 = dottedtype = 4 = dashed - dotted

【註】:loop 的部份只是運算,其與 ncar 無關,因此可單獨做。

◎將線條或點加深:call gslwsc(n)

(1)n 為線條或點加深的級數,其可用 2.0、2.5、3.0 ....,其中系統內定值為 1.0

(2)其通常放在 call line、call curve 之前。(最好把粗細相同者放在一起,如此只要

call gslwsc 一次即可,省得麻煩)。

ex: call gslwsc (2.0) call point (2.0,5.0) call gslwsc (1.0) call line (1.0,1.0,2.0,2.0)

上面的片段程式表示把點變粗,但線條粗細仍保持不變。

◎分格數:call perim(x1,x2,y1,y2)

其中 X、Y 用整數。

ex:call perim(4,2,3,4)

表將 X方向分成四大格,而於每大格中再分成兩小格,

Y方向分成三大格,於每大格中再分成四小格。

【注意】:若在 call set(0.,1.,0.,1.,0.,1.,0.,1.,1)內執行,則會在圖形外產生大框。

43

Page 10: Ncar Graphics

文化大學大氣系電腦使用手冊 -NCAR Graphics ◎在圖形框框外加字:

call pwrit(x,y,"欲加之字串",字數,字型大小,角度,對齊方向)

call plchhq(x,y,"欲加之字串",字型大小,角度,對齊方向)

在作 call pwrit 之前,需還原成原來的 set →(0.,1.,0.,1.,0.,1.,0.,1.,1)。

(1)X、Y 為字串欲放之位置。(實數)

(2)字數:需與字串中的字數相符(包括空格、符號都要算)。(整數)

(3)角度:若用 0 表平置,90 表旋轉九十度。(逆時針轉)

(4)對齊方向:0 表置中,>0 表靠右,<0 表靠左。

【註】:對 pwrite 而言,字型大小、角度、對齊方向需用整數,但 plchhq 需用實數。

Ex:call pwrit(0.7 , 0.9 , "atmos" , 5 , 2 , 0 , 0)

表將字串 atmos 置於(0.7,0.9)的位置上,且比例大小採第二等級,不旋轉,

且以(0.7,0.9)為中心點置中。

◎改變字型、顏色

call pcseti(‘FN’,Font type) → 改變字型

call pcseti(‘CC’,cindex) → 改變顏色

44

Page 11: Ncar Graphics

文化大學大氣系電腦使用手冊 -NCAR Graphics

call pwrit 可至於 loop 中

ex:宣告部份:character long(5)*3

data (long(i),i=1,5)/" 0 ","90E","180","90W"," 0 "/

或 data long/" 0 ","90E","180","90W"," 0 "/

片段程式部份:do i=1,5 xcoord=0.1+(i-1)×0.8/5. ycoord=0.09 call pwrit(xcoord,ycoord,long(i) , 3 , 2 , 0 , 0) call plchhq(xcoord,ycoord,long(i) , 0.02 , 0. , 0.)enddo

【註】:先前所做 call 的動作都是在 USER 自訂之座標下,其所給的值都用實數,然而

在 做 call pwrit 時 需 回 到 系 統 原 先 的 座 標 中 ( 即 需 執 行 call

set(0.,1.,0.,1.,0.,1.,0.,1.,1) ) , 如 此才可 以 執 行 call pwrit ( or call

45

Page 12: Ncar Graphics

文化大學大氣系電腦使用手冊 -NCAR Graphics plchhq)而在框框外打上欲打的字,否則會將字打在框框內。

46

Page 13: Ncar Graphics

文化大學大氣系電腦使用手冊 -NCAR Graphics

【註】:將實數轉成文字格式並將其打在圖上 ==>

character*2 lab

write(lab,'(i2)') aa (其中 aa 為一整數)

call plchhq(xcd,ycd,lab,.......)

47

Page 14: Ncar Graphics

文化大學大氣系電腦使用手冊 -NCAR Graphics

◎劃等值線:call cpcnrc(name,nx,nx,ny,rmin,rmax,rint,P,Q,R)

call conrec(name,nx,nx,ny, rmin,rmax,rint,P,Q,R)

name :為放資料之陣列名稱

nx :為 X方向的資料筆數。(整數)

ny :為 Y方向的資料筆數。(整數)

rmin:等值線之最小值。(實數)

rmax :等值線之最大值。(實數)

rint :等值線間隔大小。(實數)

P:決定劃的形式。(常用『-1』)

Q:決定要不要標上 H、L 以及各點的值。若為" 0 "表要標註(H、L)," <0 "表

都不標," >0 "表除標註外,亦將各點之值標出。

R:決定劃線的形式。" <0 " 表負值用虛線畫出。

【註】:若資料為三或四維,則可用下列方式直接畫出 ==>

call cpcnrc(dd(1,1,k),nx,nx,ny,rmin,rmax,rint,P,Q,R)

若用此法需放在 doo loop 中。

◎劃風標:call

velvct(u,nx,v,nx,nx,ny,rmin,rmax,nset,leng,ispv,sp

v)

u :放 U場資料之陣列名稱。

v :放 V場資料之陣列名稱。

nx :矩陣於 X方向的資料筆數。(整數)

ny :矩陣於 Y方向的資料筆數。(整數)

rmin :所劃風標之最小值。(實數)

48

Page 15: Ncar Graphics

文化大學大氣系電腦使用手冊 -NCAR Graphics rmax :所劃風標之最大值。(實數)

nset :決定風標的間隔。大於零表使用 user 自訂視窗之最適當間隔,等於零

表使用系統內定之值,小於零表使用 user 自訂視窗之最小值。

leng :決定 max value 之風標長度,愈大表最大值之風標長度愈長。

ispv :特殊值的使用情形。0 表若遇到特殊值則不劃風標。1 表若 U場有值為特

殊值則不劃風標,2 表若 V場有值為特殊值則不劃風標,3 表若 U、V 中有

一個特殊值則不劃風標,4 表若兩者皆為零則不劃風標。

spv:特殊值。若用零則表忽略此特殊值。

◎劃流線:call strmln(u,v,work,nx,nx,ny,nset,ier)

work 表 working space,其為一陣列,最少需大於(2×nx×ny)。

ier:為傳送副程式錯訊息之變數(在程式中可直接用 ier)。

◎劃地圖call mapsti(‘LA’, 0)

call mapsti(‘GR’, 30) →表每 30 個經緯度畫一條線。

call maproj(‘CE’,plat,plon,rota)→採用之投影方式及投影中心。

ex:call maproj( ‘CE’, 0. , 180. , 0. )

“CE”:Cylindrical equidistant projection。“LC”:Lambert conformal projection。“LE”:Lambert equal-area projection。“SV”:Satellite view projection。“ME”:Mercator projection。“MO”:Mollweide type projection。plat、plon:投影中心。

call mapset(‘CO’, rlat1, rlon1, rlat2 , rlon2) →地圖選取範

圍。

49

Page 16: Ncar Graphics

文化大學大氣系電腦使用手冊 -NCAR Graphics ex:call mapset(‘CO’, -30. , 100. , 30. , –60. ) → 熱帶太平

洋地區

call mappos(x1 , x2 , y1 , y2) →地圖放置位置(在系統座標

下)。

ex:call mappos(0.1 , 0.9 , 0.3 , 0.7)

call mapdrw → 表畫出地圖。

常用的幾種地圖

50

Page 17: Ncar Graphics

文化大學大氣系電腦使用手冊 -NCAR Graphics

51

Page 18: Ncar Graphics

文化大學大氣系電腦使用手冊 -NCAR Graphics

52

Page 19: Ncar Graphics

文化大學大氣系電腦使用手冊 -NCAR Graphics

◎plot color circular dots(draws filled circular dots)call ngdots(px,py,num,size,icindex)

px、py : position of circular dots

num : number of dot to be draw(=1)

size : size of circular dots

icindex : color index

◎劃封閉曲線call frstpt( x(1) , y(1) )

do j =12,pxy

call vector( x(j) , y(j) )

enddo

53

Page 20: Ncar Graphics

文化大學大氣系電腦使用手冊 -NCAR Graphics

◎plot polymarkers

call gsmk (type)

call gpm (num, px, py)

type=1→dot 、 type=2→plus

sign、type=3→asterissks、

type=4→circles、type=5→crosses

num = number of markers

px、py = position of x/y(可為單點或數個點同時劃)

◎plot color

call setusv('LW',2000) ==> 設定線條粗細。

call gsplci(1) ==> 設定線條之顏色。

call gstxci(1) ==> 設定線條之顏色。(可省略)

call cpsetr(‘CLL’,___) ==> 設定線條粗細。

◎劃特殊符號:call pwritx(1/1024., 1/1024., “PGL’,5,1,0,0)→X

call pwritx(px,py,”R”,1,0,0,0) →Y

54

Page 21: Ncar Graphics

文化大學大氣系電腦使用手冊 -NCAR Graphics

◎打點:(此非 NCAR 內建之副程式)

call dot(name,nx,ny,spv,rmin,rmax,space)

◎打斜線:(此非 NCAR 內建之副程式)

call hatch(name,nx,ny,spv,rmin,rmax,slope,space)

name :放資料之陣列名稱。

nx :X方向的資料筆數。

ny :Y方向的資料筆數。

spv :特殊值(如 999或-999)。

rmin:打點或斜線的最低值。

rmax :打點或斜線的最高值。

55

Page 22: Ncar Graphics

文化大學大氣系電腦使用手冊 -NCAR Graphics slope :斜線的傾斜角度。

space :打點或斜線的間隔。

◎工作站間相互 Copy Files 之方式:1.先於家目錄底下編輯一個檔案(.rhosts),並於此檔案中鍵入 hostname username

2.執行 →rcp Δ 欲拷貝之檔名 Δ 主機名:欲放目錄之路徑

ex:於 tornado 上,欲將 plot.f copy至 atmos1 之家目錄下則可打→rcp plot.f

atmos1:~/.

◎將 gmeta 轉成 gif 或 jpg 的方式:(1) ctrans –d xwd gmeta > *.xwd

(2) convert *.xwd *.gif (or *.jpg)

56