立即注册 登录
气象家园 返回首页

水木清见的个人空间 http://bbs.06climate.com/?6970 [收藏] [复制] [分享] [RSS]

日志

NCL学习点滴

已有 2381 次阅读2013-12-15 13:52 |个人分类:NCL学习

1、数据类型转换
NCEP再分析(2.5*2,5)在读取的时候,必须要使用
load"$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl" 
... 
hgt = short2flt( f- >hgt(:,5,:,:) ) 
 否则读取的值为valid_range而非actual_range(hgt本身是按短整型short存储的,要将它转换为浮点型float) 

 2、一些缩写的含义
res <=> resources
pm <=> plot manager(绘图管理)
wks <=> workstation (工作台,即输出的图形文件)
gsn <=> getting started with NCL (画图的命令都以gsn_开头)
gsn_csm <=> gsn_climate system model (画图的界面为csm风格,即自动添加标签信息如下图)

csm



3、脚本文件

可以为.ncl,.txt,甚至不加后缀



4、pmTickMarkDisplayMode

坐标刻度设置,NoCreate为不创建刻度,Never创建但不显示刻度,Always总是显示,Conditional在不覆盖已有图像的坐标前提下会显示



5、NCEP再分析资料时间的提取

f1 = addfile("hgt500.nc","r") ;加载文件

time1 = f1->time ;读取时间
utc_hr = ut_calendar(time1,3) ;转换时间至小时(本身time@units已有定义)
res@gsnLeftString = "500hPa at " + sprintf("%10.0f",utc_hr) + "UTC" ;输出时要用sprintf函数,否则为指数形式输出

另:ut_calendar和cd_calendar好像没区别啊。。

6、风羽图绘制
  • uv数据都要乘以2.5再画
  • 保持vcRefAnnoString1与vcRefMagnitudeF之比为0.4
  • 一般可以设vcRefAnnoString1=“12m/s”,vcRefMagnitudeF = 30.0
  • 风羽大小可以用vcRefLengthF调节

7、读取文件时,"->"前后不要有空格,filedump命令的">"前后必须有空格

8、新变量的维数定义
比如从文件中读取了变量u,v,求出全风速speed = sqrt(u^2+v^2),不能直接画到图中,而要先定义各个维数,否则就会报错(有时会报错有时不会,但不报错的时候画出来的图也不对),报错内容如下:

(0) check_for_y_lat_coord: Warning: Data either does not contain a valid latitude coordinate array or doesn't contain one at all.
(0) A valid latitude coordinate array should have a 'units' attribute equal to one of the following values: 
(0)    'degrees_north' 'degrees-north' 'degree_north' 'degrees north' 'degrees_N' 'Degrees_north' 'degree_N' 'degreeN' 'degreesN' 'deg north'
(0) check_for_lon_coord: Warning: Data either does not contain a valid longitude coordinate array or doesn't contain one at all.
(0) A valid longitude coordinate array should have a 'units' attribute equal to one of the following values: 
(0)    'degrees_east' 'degrees-east' 'degree_east' 'degrees east' 'degrees_E' 'Degrees_east' 'degree_E' 'degreeE' 'degreesE' 'deg east'

定义维数的代码如下:
speed!0 = "lat" ;第一维的名称
speed&lat = u&lat ;第一维的值,直接从文件中的变量u中提取
speed!1 = "lon" ;第二维的名称
speed&lon = u&lon  ;第二维的值

9、画全风速和风羽图叠加,应该把风羽图叠在全风速上而不是倒过来

10、grib文件的批处理
  • grib文件有时没有后缀(.grb等),用NCL读取时不能直接写无后缀的文件名。但只要在NCL命令里加上后缀,即使文件本身在文件夹中没有后缀也是可以读取的。
11、Dash Pattern
 
 
12、读取变量时(如a=tmp)要注意左右两边维数相同,若维数不同,要先delete(a)再读取。
 
13、画垂直剖面图的函数:

 

14、逻辑判断:与fortran相同,等于 .eq. ,大于 .gt. ,不大于 .le. 等。

 

15、调整色标大小的resource不在lb里而在pm里,分别为pmLabelBarHeightF,pmLabelBarWidthF。

 

16、已命名的颜色表http://www.ncl.ucar.edu/Applications/Scripts/rgb.txt,使用时直接"颜色名"即可。

 

17、添加colormap文件(*.rgb)的办法

  • 用read_colormap_file("rgb文件的绝对路径")
  • 新建一个文件夹,存入rgb文件,利用.bash_profile文件添加环境变量:export NCARG_COLORMAPS=/home/haley/colormaps:$NCARG_ROOT/lib/ncarg/colormaps

之后可以直接引用色表文件名

 

18、一些括号的区分

  • T(:1,45,10:20) :数字代表序号(第几个值)
  • T(:,{-20,20},{90:290:2}) :数字代表具体值;{}内单个值用 , 隔开;连续几个值用 : 间隔,分别为起始值:终止值:步长,必须单调,适用于NetCDF数据
  • (/-90.,-85.,...,85.,90./) :数字代表具体值,前面不加变量名。

注:在new函数创建多维数组时,数字代表维数,如c = new((/5,6,7/),integer) ,表示新建一个5*6*7的三维数组

 

19、计算假相当位温

wrf_eth(q , T , p)函数可以计算相当位温,得到的结果与常用的算法http://bbs.06climate.com/forum.php?mod=viewthread&tid=18408一致,但计算时应注意q , T , p都必须为三维数组。


20、Warning原因可以查找官网,或者在脚本开始加载(load)的函数中查找具体的算法及出错的原因。



评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

返回顶部