版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、NCAR Command Language(NCL),一、簡介,1.1 正確安裝NCL,windows下的安裝可以參考如下地址。 1.2 運行方式 ncl 文件名.ncl NCL的函數(shù)可以通過以下方式連接 load “myfoo.ncl”,二、語法,2.1 符號 ; 后面用以添加注釋 創(chuàng)建或引用“屬性” !創(chuàng)建或引用“命名的維” T為三維數(shù)組(time,lat,lon),則T(:1,45,10,20) 代表開始的兩個時間坐標,第46個lat,和11-21個lon坐標,為一個(2X1X11)維數(shù)組。 “坐標下標” 例子: pressure!0 = latpressure!1 = lon,lat_
2、points = (/-80, -60, -40, -20, 0, 20, 40, 60, 80/)lon_points = (/-180, -120, -60, 0, 60, 120, 180/)pressured表示double型數(shù)值 xunits=meters xlong_time=A variable for temporary storage,2.10 _FillValue 在NCL或一個netCDF文件中,屬性_FillValue代表缺失值。 如果你的數(shù)據(jù)有”missing_value”屬性而沒有”_FillValue”屬性,你可以這樣做: X_FillValue = Xmissi
3、ng_value 2.11 變量和元數(shù)據(jù) 如果y不存在,y=x會將x完整的復制給y(包括x的元數(shù)據(jù)),如果y已經(jīng)定義了,則x必須和y是同一類型的(或者可以強制轉換)。 y=(/x/)表示只將x的值賦給y,不包括x的元數(shù)據(jù)。,三、NCL文件輸入/輸出,3.1 支持的格式 netCDF3/4, HDF4 (Scientific Data Set only), HDF4-EOS, GRIB-1, GRIB-2 and CCM 創(chuàng)建文件引用,用”addfile”方法。 f = addfile (文件名, status) Statue包括”r”讀,適用所有NCL支持的格式,”c”創(chuàng)建,僅適用與netCD
4、F和HDF4格式,”w”讀/寫,僅適用與netCDF和HDF4格式. 例子: f = addfile(foo.nc, r) grb = addfile(/my/grib/foo.grb, r) hdf = addfile(/your/hdf/foo.hdf,c) h = addfile(foo.hdfeos, r) ccm = addfile(foo.ccm, r),如果X是f引用的文件中的變量,則 y=f-X 表示將X賦予y,包括其元數(shù)據(jù)。 在下面的兩種情況下,變量名兩端必須加”$”符號, 1、文件中的變量名含有非字母數(shù)字的符號(例如:空格,”+”或”-”). 2、在-右邊的那一項是表示一個
5、變量的變量。 輸出 “print”命令可以輸出所有NCL支持格式的數(shù)據(jù)。 例如:x=1 print(x) “ncl_filedump”命令可以查看GRIB和netCDF文件的詳細信息。 將short和byte轉換為float類型的函數(shù)有 x=short2flt(f-X) x=byte2flt(f-X) 以上函數(shù)使用時需要加載“contributed.ncl”, load $NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl,讀取多個文件 “addfiles”用來從多個文件獲得數(shù)據(jù)。 例: fils = systemfunc(ls ann*.n
6、c) f = addfiles(fils,r) T = f:-T 在結果T中包含了多個文件的數(shù)據(jù)。 “systemfunc(“l(fā)s ann*.nc”)”命令表示得到所有以ann為開頭的netCDF文件。 3.2 二進制數(shù)據(jù)文件 IEEE二進制數(shù)據(jù)有兩種不同的格式:big endian(高位在前)和little endian(低位在前).NCL允許通過”setfileoption”函數(shù)進行動態(tài)的轉換。,讀二進制數(shù)據(jù) fbinrecread(path:string,recnum:integer,dims*:integer,type:string)用來讀取Fortran unformatted se
7、quential文件 fbindirread(path:string,rnum:integer,dims*:integer,type:string)用來讀取固定紀錄長度的二進制數(shù)據(jù) 其它讀取二進制文件的函數(shù)有cbinread, fbinread和craybinrecread 寫二進制數(shù)據(jù) fbinrecwrite(path:string,recnum:integer,value)用來寫Fortran unformatted sequential文件 例: 假設你有下面五個變量,time,lat,lon,y,z. recnum為-1表示value放在文件尾,不為零則作為文件的記錄號。 fbinr
8、ecwrite(f.ieee,-1, time) fbinrecwrite(f.ieee,0, lat) fbinrecwrite(f.ieee,1, lon) fbinrecwrite(f.ieee,2, y) fbinrecwrite(f.ieee,3, z),其它寫IEEE二進制文件的方法有fbindirwrite、cbinwrite和fbinwrite. 3.3 ASCII 讀ASCII文件 asciiread(filepath:string,dims*:integer,datatype:string) 復雜的ASCII文件應該用C語言或Fortran來讀取。 例: z = ascii
9、read(data.asc,(/100,13/),float“ 寫ASCII文件 asciiwrite(filepath:string,value) 只能寫一列且沒有格式控制。 例:asciiwrite(foo.ascii,x) write_matrix(data*:numeric,fmtf:string,option)可以寫多列,并且可以控制格式。 例:fmtf =“15f7.2” ; fortran字符格式字符串 opt = True optfout = foo.ascii write_matrix(x,fmtf,opt),3.4 寫netCDF/HDF文件 有兩種方法來創(chuàng)建netCDF/
10、HDF文件,一種為”簡單方法”,一種為”傳統(tǒng)途徑”:在寫入任何值之前需要明確的定義文件的內容。 簡單方法 fo = addfile(“foo.nc”,”c”) 要想創(chuàng)建一個沒有上限的維(一般是時間),必須在寫入值之前添加如下代碼 filedimdef(fo,time,-1,True) 傳統(tǒng)途徑 NCL預定義netCDF文件 filevardef:為一個或多個變量定義名字 filevarattdef:從一個變量復制屬性到一個或多個文件變量 filedimdef:定義維數(shù),包括無限制維 fileattdef:從一個變量復制屬性到一個文件作全局變量 setfileoption:一些選項可以提高性能,
11、例:假設變量time、lat、lon、T在內存中。當寫入到netCDF 文件中時,T被命名為TMP。 fout = addfile(out.nc,c) ; 創(chuàng)建一個全局變量 fileAtt = True fileAtttitle = Sample fileAttConventions = None fileAttcreation_date = systemfunc(date) setfileoption(fout,“DefineMode”,True) ; optional fileattdef(fout,fileAtt) ; 預定義坐標變量 dimNames = (/time,lat,lon/
12、) dimSizes = (/-1,nlat,nlon/) ; -1 means unspecified dimUnlim = (/True,False,False/),; 預定義名字、類型、維數(shù) ; 確切的維名字或用”getvardims” filedimdef(fout,dimNames,dimSizes,dimUnlim) filevardef(fout,time,typeof(time),getvardims(time) filevardef(fout,lat ,typeof(lat) ,lat) filevardef(fout,lon ,float ,lon) filevardef(
13、fout,TMP ,typeof(T) , getvardims(T) ) ; 預定義每個變量的屬性 filevarattdef(fout,time,time) filevarattdef(fout,lat ,lat) filevarattdef(fout,lon ,lon) filevarattdef(fout,TMP ,T) setfileoption(fout,”SuppressDefineMode”,False) ; optional ; 僅輸出數(shù)值可用 (/ /) 過濾掉元數(shù)據(jù) fout-time = (/time/) fout-lat = (/lat/) fout-lon = (/
14、lon/) fout-TMP = (/T/) ; T in script; TMP on file,向netCDF中寫入標量 簡單方法 fo = addfile(simple.nc,c) con = 5 con!0 = ncl_scalar fo-constant = con 傳統(tǒng)方法 re = 6.37122e06 relong_name = radius of earth reunits = m fout = addfile(traditional.nc, c) filevardef(fout,re,typeof(re),ncl_scalar) filevarattdef(fout,re,
15、re) fout-re = (/re/) ncl_convert2nc可以將任何支持的格式轉換為netCDF格式,四、輸出到窗口,有效的printing函數(shù)有: printVarSummary:輸出變量的概述(包括元數(shù)據(jù)) print:和printVarSummary相同,輸出每個元素的值 sprinti,sprintf:提供許多格式控制 write_matrix:以格表格式輸出數(shù)據(jù),例:printVarSummary 輸入:printVarSummary(u) 結果: Variable: u Type: double Total Size: bytes 147456 values Numbe
16、r of Dimensions: 4 Dimensions / Sizes: time | 1 x lev | 18 x lat | 64 x lon | 128 Coordinates: time: 4046.4046 lev: 4.809 . 992.5282 lat: -87.86379 . 87.86379 lon: 0. 0 . 357.1875 Number of Attributes: 2 long_name: zonal wind component units: m/s,例:print 輸入:print(u) 結果: (0,0,0,0) 31.7 (0,0,0,1) 31.4
17、 (0,0,0,2) 32.3 例:sprintf, sprinti min(u)= -53.8125 print(min(u)=+sprintf(%5.2f,min(u) 結果:min(u) = -53.81 ii=(/-47,3579,24680/) print(sprinti(%+7.5i,ii) 結果:-00047, +03579, +24680,例:write_matrix 輸入:write_matrix(T,“5f7.2”,False) ;T為3行5列的數(shù)組 結果: 4.36 4.66 3.77 -1.66 4.06 9.73 -5.84 0.89 8.46 10.39 4.91
18、4.59 -3.09 7.55 4.56 “5f7.2”表示生成5列,沒個元素以f7.2的格式輸出,可以通過將第三個元素設置為True為輸出添加額外的內容。 如: opt = True opttitle = Normal write_matrix (T, “5f7.2 , opt) 更多信息請查看官網(wǎng)提供的函數(shù)列表。,五、數(shù)據(jù)分析,NCL提供了多種分析數(shù)據(jù)的方法 1、通過數(shù)組的處理來分析數(shù)據(jù) 2、NCL提供了內置的幾百個函數(shù) 3、許多用戶貢獻的函數(shù) 4、調用Fortran或C語言函數(shù) 5.1、通過數(shù)組分析 對于大多數(shù)運算符,它的操作數(shù)必須具有相同的維數(shù),且每一維的大小應該是相同的。 另外,操作數(shù)的數(shù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中職第二學年(英語基礎)日常用語綜合測試試題及答案
- 2025年中職(大數(shù)據(jù)與會計)會計電算化實操試題及答案
- 2025年中職第一學年(畜牧獸醫(yī))畜禽常見病防治試題及答案
- 2025年大學制藥工程(制藥設備管理)試題及答案
- 2025年中職工程運營管理(管理技術)試題及答案
- 2025年高職工藝美術品設計(工藝品設計)試題及答案
- 2025年高職烹飪工藝與營養(yǎng)(烹飪安全管理)試題及答案
- 2025年中職電力系統(tǒng)自動化技術(電力系統(tǒng)操作)試題及答案
- 2025年大學醫(yī)學技術(醫(yī)學影像技術)試題及答案
- 2025年高職(會計)稅務會計實務試題及答案
- 施工現(xiàn)場火災事故預防及應急措施
- 污水處理站施工安全管理方案
- 2025年蘇州市事業(yè)單位招聘考試教師招聘體育學科專業(yè)知識試卷
- 加油站投訴處理培訓課件
- 學堂在線 雨課堂 學堂云 唐宋詞鑒賞 期末考試答案
- 2025至2030中國輻射監(jiān)測儀表市場投資效益與企業(yè)經(jīng)營發(fā)展分析報告
- 工程力學(本)2024國開機考答案
- 產品認證標志管理制度
- CJ/T 192-2017內襯不銹鋼復合鋼管
- GB/T 31907-2025服裝測量方法
- 消毒供應中心清洗流程
評論
0/150
提交評論