You are on page 1of 17

文化大學大氣系電腦使用手冊 -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
◎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 看圖軟體介面

IDT 看圖軟體介面

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

◎在寫 NCAR Graphic 程式時有五行一定要寫:


1. call opngks → 將 ncar 核心程式打開。(放在第一行)
2.call set → 訂定座標。
3.call perim → 若無此 call 則框框有時會無法出現。
4.call frame → 將劃好的圖送出,若沒有此行,則無法將圖形送出。若放錯位置
則有可能會將數個圖形疊在一起。
5.call clsgks → 將 ncar 核心程式關閉。(放在最後一行)

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


放到最後寫。

37
文化大學大氣系電腦使用手冊 -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。

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

◎劃線:call line( x 1 , y1 , x2 , y2 ) →可放在 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,20
px(i) = i ! for x
py(i) = i ! for y
enddo
call curve(px , py , 20)

39
文化大學大氣系電腦使用手冊 -NCAR Graphics
【法二】:call GSLN (type) ==> 決定型式
call GPL (np,px,py) ==> 畫線
call GSLN (type) ==> 還原型式

其中 type = 1 = solid line


type = 2 = dashed line
type = 3 = dotted
type = 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)內執行,則會在圖形外產生大框。

◎在圖形框框外加字:
call pwrit(x,y,"欲加之字串",字數,字型大小,角度,對齊方向)
call plchhq(x,y,"欲加之字串",字型大小,角度,對齊方向)

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


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

40
文化大學大氣系電腦使用手冊 -NCAR Graphics
(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) → 改變顏色

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 "/

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

片段程式部份:
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
plchhq)而在框框外打上欲打的字,否則會將字打在框框內。

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

【註】:將實數轉成文字格式並將其打在圖上 ==>
character*2 lab
write(lab,'(i2)') aa (其中 aa 為一整數)
call plchhq(xcd,ycd,lab,.......)

43
文化大學大氣系電腦使用手冊 -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,s
pv)

u :放 U 場資料之陣列名稱。
v :放 V 場資料之陣列名稱。
nx :矩陣於 X 方向的資料筆數。(整數)
ny :矩陣於 Y 方向的資料筆數。(整數)
rmin :所劃風標之最小值。(實數)
rmax :所劃風標之最大值。(實數)
nset :決定風標的間隔。大於零表使用 user 自訂視窗之最適當間隔,等於零
表使用系統內定之值,小於零表使用 user 自訂視窗之最小值。
leng :決定 max value 之風標長度,愈大表最大值之風標長度愈長。

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

44
文化大學大氣系電腦使用手冊 -NCAR Graphics
殊值則不劃風標,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) →地 圖 選 取
範圍。
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 → 表畫出地圖。

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

常用的幾種地圖

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

47
文化大學大氣系電腦使用手冊 -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

◎劃封閉曲線

48
文化大學大氣系電腦使用手冊 -NCAR Graphics
call frstpt( x(1) , y(1) )
do j =12,pxy
call vector( x(j) , y(j) )
enddo

◎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

49
文化大學大氣系電腦使用手冊 -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 :打點或斜線的最高值。
slope :斜線的傾斜角度。
space :打點或斜線的間隔。

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

◎工作站間相互 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)

51

You might also like