GrADS,NCL一些经验

GrADS经纬度比例方法

*取消经纬比例自动调整
'set mproj scaled'

设置绘图区域,使得一致
'set vpage 1 7 1 7'

GrADS画特定经线方法

set clevs 23.5; d lat
set clevs 120;d lon
GrADS 查看多个打开文件的ctl
q ctlinfo 1
q ctlinfo 2
...
2个不同的缺测值 fwrite更改默认缺测值
GrADS用fwrite输出时,默认的缺测值是-9.9900000E+08,如果输入源的缺测值与之不一致,则会出现两种缺测值的情况。解决的办法,可以在fwrite 声明后面设置默认缺测值设置。比如
'reinit'
'open J:/ec79-15/ansnablameansst79_15.ctl'
'set t 1 12'
'save=ave(absnablamsst,t+0,t=444,12)'
'modify save seasonal'
'set gxout fwrite'
'set undef 9.999E+20'
'set x 1 480'
'set y 1 89'
'set fwrite J:/ec79-15/seasonal.grd'
'd save'
'disable fwrite'
'reinit'
;
(注:modify save seasonal命令意为将save变量修改成季节变量,方便与其它不同大小的变量计算(比如求季节距平),此外modify还有另外一个选项diurnal日变化)
NCL使用自定义色标
清风给的调色盘确实好用,生成的rgb格式也可以。但是最近再次遇到了ncl无法正常读取colormap错误的问题,参考了一下官网。最后发现是这样的。官网给出的文件有“ncolors=8”这一行,用NCL调色盘生成的脚本也有这一句话。但是在我的ncl里面无法使用。最后删了这一句话之后就好了。另外,注意前两行是用来定义底色和填色的。需要手动添加。比如加的是“255 255 255”和“0 0 0”这两行。最后能正常生成了。(一句话,用GrADS调色盘生成的rgb文件需要删掉nclolors这一行,并在文件最前面加上“255 255 255”和“0 0 0”这两行(定义底色))
(注:今天发现rgb文件最后一行上也要加,貌似是这样的:第一行定义,第二行定义填充线色,最后一行表示背景色)
GrADS使用NCL色标
(20171102注:GrADS使用colormap命令使用NCL色标时候,出现了一个问题,发现colormap打开的相关rgb文件在ncolors那一行后面还要有 # r g b 这一行,否则可能无法正常使用。
Cressman插值(oacre函数)
oacres函数实际上就是对数据进行多次cressman插值,其插值的影响半径是逐渐减少的,默认的影响半径(单位是格点)是10,7,4,2,1。如果某格点影响半径范围内的站点数目小于3个,那么该格点的值设置为缺测值。(参考http://cola.gmu.edu/grads/gadoc/gradfuncoacres.html)
oacres函数源代码 ftp://cola.gmu.edu/grads/2.1/grads-2.1.1.b0-src.tar.gz,解压后src目录下gafunc.c文件,第5313-5602行
GRADS色号
0-黑色,1-白色,2-红色,3-绿色,4-蓝色,5-青色,6-洋红色,7-黄色,8-橘色,9-紫色,10-黄绿色,11-中蓝色,12-深黄色,13-水绿色,14-深紫色,15-灰色
超过20以上的色号为自定义色号
GrADS 坐标
调字体
set xlopts 4 1 0.1 设置X轴标记数字的颜色、粗细和大小(英寸)
set ylopts 4 1 0.1 设置Y轴标记数字的颜色、粗细和大小(英寸)
调坐标间隔
set xlint interval
set ylint interval
set xlevs/ylevs 再控制标记的分布
GRADS等值线标记
set clopts color <thickness> <size> >
设置等值线标记的颜色 粗细 大小
GRADS 风羽朝向 set hempref auto|nhem|shem

默认的是坐标在北半球,则风羽朝向风的左侧,在南半球,则风羽朝向风的右侧。一般情况下是没问题的。但是,如果画的是有特殊含义的图(坐标经纬度是相对的经纬度,那么就需要修改这一选项)

NCL执行出现问题  a warning of 'Get System Resource'

没有设置NCARG_ROOT环境变量

NCL读取地图数据

https://www.ncl.ucar.edu/Applications/topo.shtml

利用grib2ctl对ERA5预报场数据生成ctl

grib2ctl -verf 10fg.grib > 10fg.ctl

gribmap -e -i 10fg.ctl

对描述多个ERA5预报场数据的ctl文件写法

注意,通配符应当为%iy4,%iy2,%im2之类的,否则会出现无法读取全部数据的错误!详见http://cola.gmu.edu/grads/gadoc/templates.html

 

CentOS7 给vi编辑器添加NCL语法高亮(适用用全体用户,首先需要用root登录)

法一:

1. 下载ncl语法文件 https://www.ncl.ucar.edu/Applications/Files/ncl3.vim ,将其移动至ncl语法文件夹(路径大约在/usr/share/vim/vim74/syntax/,因版本而异)下,并更名成ncl.vim

2. 修改/etc/vimrc文件,在前头加入以上内容:

au BufRead,BufNewFile *.ncl set filetype=ncl
au! Syntax newlang source $VIM/ncl.vim
syntax on

 

法二 参考https://github.com/aaronspring/ncl_lazy_vim(暂未成功):

1. 下载ncl语法文件  wget https://github.com/aaronspring/ncl_lazy_vim/archive/refs/tags/v0.3.tar.gz , 解压,进入解压后的目录

2. 把.vim文件夹复制到制定目录下: mv .vim /usr/share/vim/ 

2. 修改/etc/vimrc文件 (参考 https://linuxhint.com/configure_vim_vimrc/)   

   1)把文本中的文件追加写到vimrc中cat add_ncl_complete_to_your_vimrc >> /etc/vimrc  

   2)在vimrc文件最前面添加这三行:

au BufRead,BufNewFile *.ncl set filetype=ncl
au! Syntax newlang source $VIM/ncl.vim
syntax on

   3)在vimrc文件中找到如下两行

let s:ncl_func = readfile($HOME. '/.vim/NCL_functions.txt')
let s:ncl_resources = readfile($HOME . '/.vim/NCL_resources.txt')

 然后将$HOME改成第2步中移到的目录

let s:ncl_func = readfile('/usr/share/vim'. '/.vim/NCL_functions.txt')
let s:ncl_resources = readfile('/usr/share/vim' . '/.vim/NCL_resources.txt')

 

 

posted @ 2018-01-14 20:57  chinagod  阅读(6303)  评论(0编辑  收藏  举报