NCL基本使用及实例演示
NCL基本使用及实例演示

10年9月9日星期四
NCL基本语言特性
文档:/Document/ 类似Fortran、C,不过是脚本 主要步骤:
• • • •
载入脚本 读入数据 处理数据 图形显示
执行脚本:
> ncl <脚本名称>.ncl <参数>=<值> ... 注意:如果传入字符串,则\”<值>\”
2
10年9月9日星期四
• NCL的网站 • NCL的下载及安装 • NCL的基本语言特性 • NCL的实例
3
10年9月9日星期四
4
10年9月9日星期四
5
10年9月9日星期四
6
10年9月9日星期四
7
10年9月9日星期四
8
10年9月9日星期四
9
10年9月9日星期四
contributed.ncl - 一些用户贡献的脚本
clmDayTLL(函数) /Document/Functions/Contributed/index.shtml 16
10年9月9日星期四
NCL基本语言特性
一、读入数据
自描述数据格式:NetCDF、HDF 、GRIB f = addfile(“<目录>/<文件名>.<扩展名>”, “<文件模式>”)
11
10年9月9日星期四
NCL的安装
下载需要在ESG网站上注册用户,根据需要下载相应的压缩包 NCL无须编译,直接解压缩即可
安装:(对于Windows,需要安装Cygwin/X,比较繁琐,但也是可以安装)
> tar xzf ncl_ncarg-5.2.1.<...>.tar.gz -C <存放目录> > cd ~; vi .bashrc export NCARG_ROOT=<存放目录> export PATH=$PATH:$NCARG_ROOT/bin 可能遇到无法找到库的问题,应根据实际情况安装相应库
ncl绘图基本流程

ncl绘图基本流程下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。
文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor. I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!NCL(NCAR Command Language)是一种专门用于气象、海洋和气候数据处理和可视化的编程语言。
ncl积分函数

NCL积分函数引言NCL(Nested Control Language)是一种编程语言,由美国国家中心台风预报(National Center for Atmospheric Research Tropical Cyclone Guidance)开发。
NCL积分函数是NCL提供的一个功能强大的运算函数,用于在指定区间内对给定的函数进行积分计算。
本文将详细介绍NCL积分函数的用法、参数和示例。
一级标题二级标题1三级标题11.NCL积分函数的概念NCL积分函数是用于数值积分的功能函数,可以对指定区间内的函数进行积分计算。
积分函数采用数值计算方法,通过将指定区间划分为若干小区间,在每个小区间上进行函数值的计算并求和,得到近似的积分值。
2.NCL积分函数的语法NCL积分函数的语法如下:result = integ(fn, a, b [, option=value])参数说明:•fn:需要积分的函数,可以是NCL提供的内置函数,也可以是用户自定义的函数。
•a:积分区间的起始值。
•b:积分区间的结束值。
•option=value:可选参数,用于指定积分函数的一些选项。
3.NCL积分函数的选项NCL积分函数提供了一些选项,用于控制积分过程的精度和计算方式。
常用的选项包括:•epsilon:精确度控制参数,用于控制积分的精度。
默认值为1e-6,可以根据需要进行调整。
•method:积分方法参数,用于指定使用的积分方法。
NCL积分函数支持的方法有:hermite、glau、spline等。
二级标题2三级标题21.NCL积分函数的使用步骤使用NCL积分函数进行数值积分的步骤如下:•导入NCL积分函数库:在NCL程序开头,需要导入NCL积分函数库,以便可以使用相关的积分函数。
•定义需要积分的函数:根据实际问题,定义需要进行积分的函数。
可以是NCL内置函数,也可以是用户自定义函数。
•调用积分函数:使用integ函数调用NCL积分函数,传入需要积分的函数以及积分区间的起始值和结束值。
NCL学习笔记(实战篇)

这里以绘制气温分布图为例,效果如下图:X 这里几点说明:1.ncl不支持中文显示,所有文字都是英文,但是支持很多样式的字体,参考2.图下方的labelbar只能在图的周围,不能放置在图内。
要想显示图下方的图例,就要使用legend而不是labelbar了。
使用NCL脚本绘制一张如上图所示的png图片主要分为以下几个步骤一、读取各站点的气温数据。
二、将站点数据使用各种差值函数转换成格点数据。
三、使用源对地图进行基本设置四、使用源对等值线填充进行基本设置五、使用源对labelbar进行基本设置六、生成png图片接下来将按照这几个步骤,详细介绍。
一、读取各站点的气温数据NCL支持的数据格式主要有netCDF文件(.nc .cdf)、HDF4(.hd .hdf)、HDF4-EOS(.hdfeos)、GRID-1/GRIB-2(.grb.grib)、CCMHistory Tape(.ecm),除此之外呢,它支持二进制文件和ascii文件,这两者是我们最熟悉的。
这里我们使用ascii文件,更多文件读取方式参考/Applications/list_io.shtml为了批量生成产品图片,需要配置文件设置数据来源以及图片生成后存放位置。
config.txt文件如下:One Hour of Temperature2010111502./t1//root/WorkSpace/MICAPS_surface/t1/10111502.000第一行是标题第二行是输出png图路径第三行是输入数据文件路径第四行是数据文件名在NCL脚本(temperature.ncl)中使用以下几行代码就可以了filepath = './config.txt' ;参数文件路径argu = asciiread(filepath,-1,'string') ;以字符串形式读取参数文件入数组argu lines = asciiread(argu(2)+argu(3),-1,'string') ;以字符串形式读取数据文件入数组linesstation = stringtofloat(str_get_field(lines(3::),1,' ')) ;从数组lines中获取站号lon = stringtofloat(str_get_field(lines(3::),2,' ')) ;从数组lines中获取经度值lonlat = stringtofloat(str_get_field(lines(3::),3,' ')) ;从数组lines中获取纬度值lat height = stringtofloat(str_get_field(lines(3::),4,' ')) ;从数组lines中获取海拔高度R = stringtofloat(str_get_field(lines(3::),5,' ')) ;从数组lines中获取站点数据值由于数据文件10111502.000的前3行是文件头,不包含数据,因此lines从第三行开始读取数据。
Windows平台上NCL的安装

图文详解Windows平台上NCL的安装NCL在Linux下的安装非常容易,只需下载适当版本的文件,设置好环境变量即可使用。
NCL在Windows下的安装则要麻烦一些,需要先安装一个虚拟Linux环境(Cygwin/X)。
以下内容详细介绍NCL在Windows平台上的安装过程,希望仅具备Windows基本操作技能的用户也能轻松安装NCL。
一、NCL简介二、准备工作三、安装Cygwin/X四、熟悉Cygwin/X环境五、安装NCL六、运行NCL范例七、语法高亮显示(此部分供有兴趣的用户参考)八、.hluresfile文件(此部分供有兴趣的用户参考)九、FAQ十、获取帮助一、NCL简介NCL(NCAR Command Language)是由NCAR的“Computational & Information Systems Laboratory”开发的。
NCL是一种编程语言,专门用于分析和可视化数据。
主要用于以下三个领域:文件输入/输出(File input and output):资料处理(Data processing):图形显示(Graphical display):可生出出版级别的黑白、灰度或彩色图。
从5.0起,NCL和NCAR Graphics已经打包在一起发行。
2009年3月4日,NCL发布了最新的5.1.0版,该版本更新了地图投影,修正了一些bug,增加了更多的函数及资源。
下图为新增的含中国省界的地图(见图1-1)。
二、准备工作2.1 安装环境安装环境为WinXP Professional SP3,并做如下假定:计算机名:TEAM用户名:Grissom安装目录:D:\download用户在实际安装中,请根据自己系统的信息替换本教程中的计算机名和用户名。
特别说明:用户名中不能出现空格,否则会在使用中出现一些问题。
2.2 下载Cygwin/XCygwin/X=Cygwin+X。
通俗地说,Cygwin/X可以在Windows平台上实现命令行+图形的Linux模拟环境。
第二章-NCL变量及基本语法

values
scalar or array
coords
time latitude longitude etc
以作为一个单独的数据对象.
2.2 NCL 语法
= - 赋值 • := - 重新赋值 (v6.1.2) • ; - 注释 [可在任何地方出现 ,“;” 右边文字将被忽略] • -> - 通过addfile(s)函数输入/输出变量 • @ - 读取/创建属性 • ! - 读取/创建named dimension • & -读取/创建坐标变量 • {…} – 坐标截取 • $...$ - 当使用addfile(s)输入/输出变量时,包住字符 • (/../) – 构建数组并移除 meta data • [/../] – 构建list; • [:] - list中的所有分量 • : - 数组语法 • | - 用于隔离named dimensions • \ - 连续符 [statement to span multiple lines] • :: - 外部共享对象的语法(比如 fortran/C)
•
数据类型
numeric (classic netCDF3) • double (64 bit) • float (32 bit) • long (64 bit; signed +/-) • integer (32 bit; signed +/-) • short (16 bit; signed +/-) • byte ( 8 bit, signed +/-) • complex NOT supported enumeric (netCDF4; HDF5) • int64 (64 bit; signed +/-) • uint64 (64 bit; unsigned ) • uint (32 bit; unsigned ) • ulong (32 bit; unsigned ) • ushort (16 bit; unsigned ) • ubyte ( 8 bit, unsigned) non-numeric • string • character • graphic • file • logical • list
NCL绘图示例(三)小波图

NCL绘图示例(三):小波图施宁(南京信息工程大学大气科学学院)beginf = addfile("./ENSO-index.nc", "r")ensoi = f->ensoitime = ensoi&yearN = dimsizes(ensoi);; 小波计算mother = 0 ; 母小波类型,通常为0,即'Morlet'小波。
其余两中被分别为1,'Paul'小波和2,'DOG' (derivative of Gaussian)小波dt = 1 ; 数组中数值之间的时间间隔,通常为1。
本例中表示间隔1年。
param = -1 ; 母小波参数。
如果param < 0,则使用默认数值,即采用'Morlet'小波时为6;Paul'小波为4;'DOG'小波为2s0 = dt ; 'Morlet'小波s0 = dt ; 'Paul'小波s0 = dt/4dj = 0.25 ; 常用设定jtot = 1+floattointeger(((log10(N*dt/s0))/dj)/log10(2.)) ; 常用设定npad = N ; 常用设定nadof = 0 ; 常用设定noise = 1 ; 常用设定,h红噪声检验siglvl = .05 ; 置信度水平isigtest= 0 ; 采用chi-square 检验;若为1则是对全部波谱进行时间平均检验w = wavelet(ensoi,mother,dt,param,s0,dj,jtot,npad,noise,isigtest,siglvl,nadof);************************************power = onedtond(w@power,(/jtot,N/)) ; 功率谱power!0 = "period" ; Y axispower&period = w@periodpower!1 = "time" ; X axispower&time = timepower@long_name = "Power Spectrum"power@units = "1/unit-freq";计算显著性( >= 1 则显著)SIG = power ; 复制元数据SIG = power/conform (power,w@signif,0)SIG@long_name = "Significance"SIG@units = " ";*************************************************wks = gsn_open_wks("eps","plot-enso-wavelet")gsn_define_colormap(wks,"BlAqGrYeOrReVi200")YLValues = (/1,2,4,8,16/)YLLabels = (/"1","2","4","8","16"/)res = Trueres@gsnDraw = Falseres@gsnFrame = Falseres@gsnRightString = " "res@gsnLeftString = " "res@trYReverse = True ; 倒置y-axisres@tmYLMode = "Explicit"res@tmYLValues = YLValuesres@tmYLLabels = YLLabelsres@tmLabelAutoStride = Trueres@trYMaxF = max(YLValues);res@trYMinF = min(YLValues)res@cnLinesOn = Falseres@cnLineLabelsOn = Falseres@cnInfoLabelOn = Falseres2 = resres@tiXAxisString = "Year"res@tiXAxisOffsetYF = 0.135res@tiYAxisString = "Years"res@cnFillOn = Trueres@cnFillMode = "RasterFill"res@cnRasterSmoothingOn = True;;;;;;;;;;;;;res2@cnLevelSelectionMode = "ManualLevels"res2@cnMinLevelValF = 0.00res2@cnMaxLevelValF = 2.00res2@cnLevelSpacingF = 1.00res2@cnFillScaleF = 0.5 ; 增加形状填充的密度(通过下面调用ShadeGtContour实现形状填充)plot = gsn_csm_contour(wks,power,res)iplot = gsn_csm_contour(wks,SIG,res2)opt = Trueopt@gsnShadeFillType = "pattern" ; 默认设置opt@gsnShadeHigh = 17 ;见附录图A.3iplot = gsn_contour_shade(iplot,-999.,1.,opt) ; 从大于等于1.的第一个等值线开始用形状为17填充overlay(plot,iplot) ; 在原图上添加显著性plot = ShadeCOI(wks,plot,w,time,False) ;;;添加各频率的功率gws = w@gwsresl = Trueresl@gsnFrame = Falseresl@gsnDraw = Falseresl@trYAxisType = "LogAxis"resl@trYReverse = True ; reverse y-axisresl@tmYLMode = "Explicit"resl@tmYLValues = YLValuesresl@tmYLLabels = YLLabelsresl@trYMaxF = max(YLValues)resl@trYMinF = min(YLValues)resl@tiXAxisString = "Global Wavelet Power" plotg = gsn_csm_xy(wks,gws,power&period,resl) ;; 将plotg添加至plot的右侧plotc = gsn_attach_plots(plot,plotg,res,resl) draw(plot)frame(wks)end。
NCL画图个例讲解

Example 1——XY plots这个例子介绍了NCL的基础知识,例如如何开始和结束NCL脚本,如何创建和初始化变量,如何创建和绘制XY坐标图,以及如何设置resources来改变XY坐标图的外观。
此外还介绍了NCL变量包含元数据的概念,以及展示了如何从ASCII文件读取数据。
这个例子创建了5个XY坐标图。
前四个图使用了NCL脚本生成的数据,第五个图读取了ASCII文件的数据。
第一个图有一个曲线,其他图右多条曲线。
每个图相对前一个图来讲都有一些改动的地方,例如添加标题、线标签,改变线条颜色和粗细,添加标记。
在以后的例子中将有更加复杂的XY坐标图。
请注意,“line”和“curve”在这个示例中互换使用,用来表示XY坐标图的曲线。
分号“;”在NCL脚本中表示允许注释。
所有的注释都必须以分号开头,任何在分号之后和下一个换行符前的东西都将忽略。
注释可以在一行中单独出现,也可以出现在NCL命令之后。
但是在同一行注释不能出现在命令之前,因为注释符之后所有的东西都被忽略。
运行这个示例,必须下载以下文件:gsun01n.ncl,然后键入:ncl gsun01n.ncl 示例1代码及解释1. load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl" ; Load the NCL file that contains the gsn_*载入本示例使用的包含函数和程序(以gsn开头的)的NCL脚本。
NCL中的load语句的作用和C和Fortran90程序中include作用一样。
2.; functions used below.3. begin每个NCL脚本都以begin声明开始,以end声明结束。
4. x = new(9,float) ; Define two 1D arrays of 9 elements each.5. y = new(9,float)用new语句来声明2个各有9个元素的1维浮点数组。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
11
10年9月9日星期四
NCL的安装
下载需要在ESG网站上注册用户,根据需要下载相应的压缩包 NCL无须编译,直接解压缩即可
安装:(对于Windows,需要安装Cygwin/X,比较繁琐,但也是可以安装)
> tar xzf ncl_ncarg-5.2.1.<...>.tar.gz -C <存放目录> > cd ~; vi .bashrc export NCARG_ROOT=<存放目录> export PATH=$PATH:$NCARG_ROOT/bin 可能遇到无法找到库的问题,应根据实际情况安装相应库
contributed.ncl - 一些用户贡献的脚本
clmDayTLL(函数) /Document/Functions/Contributed/index.shtml 16
10年9月9日星期四
NCL基本语言特性
一、读入数据
自描述数据格式:NetCDF、HDF 、GRIB f = addfile(“<目录>/<文件名>.<扩展名>”, “<文件模式>”)
13
10年9月9日星期四
NCL基本语言特性
文档:/Document/ 类似Fortran、C,不过是脚本 主要步骤:
• • • •
载入脚本 读入数据 处理数据 图形显示
执行脚本:
> ncl <脚本名称>.ncl <参数>=<值> ... 注意:如果传入字符串,则\”<值>\”
14
10年9月9日星期四
NCL基本语言特性
文档:/Document/ 类似Fortran、C,不过是脚本 主要步骤:
• • • •
载入脚本 读入数据 处理数据 图形显示
load ...
执行脚本:
> ncl <脚本名称>.ncl <参数>=<值> ... 注意:如果传入字符串,则\”<值>\”
11
10年9月9日星期四
NCL的安装
下载需要在ESG网站上注册用户,根据需要下载相应的压缩包 NCL无须编译,直接解压缩即可
安装:(对于Windows,需要安装Cygwin/X,比较繁琐,但也是可以安装)
> tar xzf ncl_ncarg-5.2.1.<...>.tar.gz -C <存放目录> > cd ~; vi .bashrc export NCARG_ROOT=<存放目录> export PATH=$PATH:$NCARG_ROOT/bin 可能遇到无法找到库的问题,应根据实际情况安装相应库
执行脚本:
> ncl <脚本名称>.ncl <参数>=<值> ... 注意:如果传入字符串,则\”<值>\”
14
10年9月9日星期四
NCL基本语言特性
脚本基本结构:
load ... begin ; read in data ; process data ; visualization end
15
10年9月9日星期四
14
10年9月9日星期四
NCL基本语言特性
文档:/Document/ 类似Fortran、C,不过是脚本 主要步骤:
• • • •
载入脚本 读入数据 处理数据 图形显示
执行脚本:
> ncl <脚本名称>.ncl <参数>=<值> ... 注意:如果传入字符串,则\”<值>\”
计算风场的散度
<散度> = uv2dvG_Wrap(<u风>, <v风>)
Voronoi图(用于空间划分,或网格生成)
18
10年9月9日星期四
NCL基本语言特性
二、处理数据
/Applications/list_dataP.shtml EOF分解
<特征向量> = eofunc_Wrap(<三维数据>, <特征值数>, <选项>) <时间系数> = eofunc_ts_Wrap(<三维数据>, <特征向量>, <选项>)
11
10年9月9日星期四
NCL的安装
下载需要在ESG网站上注册用户,根据需要下载相应的压缩包 NCL无须编译,直接解压缩即可
安装:(对于Windows,需要安装Cygwin/X,比较繁琐,但也是可以安装)
> tar xzf ncl_ncarg-5.2.1.<...>.tar.gz -C <存放目录> > cd ~; vi .bashrc export NCARG_ROOT=<存放目录> export PATH=$PATH:$NCARG_ROOT/bin 可能遇到无法找到库的问题,应根据实际情况安装相应库
计算风场的散度
<散度> = uv2dvG_Wrap(<u风>, <v风>)
Voronoi图(用于空间划分,或网格生成)
18
10年9月9日星期四
NCL基本语言特性
二、处理数据
/Applications/list_dataP.shtml EOF分解
<特征向量> = eofunc_Wrap(<三维数据>, <特征值数>, <选项>) <时间系数> = eofunc_ts_Wrap(<三维数据>, <特征向量>, <选项>)
14
10年9月9日星期四
NCL基本语言特性
文档:/Document/ 类似Fortran、C,不过是脚本 主要步骤:
• • • •
载入脚本 读入数据 处理数据 图形显示
执行脚本:
wks = gsn_open_wks res = True res@... = ... plot = gsn_csm_contour_map_ce(...)
NCL根据<扩展名>来判断数据格式
非自描述数据格式:文本文件、二进制文件 data = asciiread(“<文件路径>”, (/<维数>/), “<数据类型>”) data = fbinrecread(“<文件路径>”, <记录数>, (/<维数>/), “<数据类型>”) 更多参见:/Applications/list_io.shtml
14
10年9月9日星期四
NCL基本语言特性
文档:/Document/ 类似Fortran、C,不过是脚本 主要步骤:
• • • •
载入脚本 读入数据 处理数据 图形显示
f = addfile(“a.nc”, “r”)
执行脚本:
> ncl <脚本名称>.ncl <参数>=<值> ... 注意:如果传入字符串,则\”<值>\”
11
10年9月9日星期四
NCL的安装
• •
下载.hluresfile到家目录(~) 下载相应的编辑器加强插件(editor enhancement) /Applications/editor.shtml 提供语法高亮,补全功能
12
10年9月9日星期四
• NCL的网站 • NCL的下载及安装 • NCL的基本语言特性 • NCL的实例
14
10年9月9日星期四
NCL基本语言特性
文档:/Document/ 类似Fortran、C,不过是脚本 主要步骤:图形显示
执行脚本:
> ncl <脚本名称>.ncl <参数>=<值> ... 注意:如果传入字符串,则\”<值>\”
17
10年9月9日星期四
NCL基本语言特性
二、处理数据
/Applications/list_dataP.shtml EOF分解
<特征向量> = eofunc_Wrap(<三维数据>, <特征值数>, <选项>) <时间系数> = eofunc_ts_Wrap(<三维数据>, <特征向量>, <选项>)
• NCL的网站 • NCL的下载及安装 • NCL的基本语言特性 • NCL的实例
10
10年9月9日星期四
NCL的安装
下载需要在ESG网站上注册用户,根据需要下载相应的压缩包 NCL无须编译,直接解压缩即可
安装:(对于Windows,需要安装Cygwin/X,比较繁琐,但也是可以安装)
> tar xzf ncl_ncarg-5.2.1.<...>.tar.gz -C <存放目录> > cd ~; vi .bashrc export NCARG_ROOT=<存放目录> export PATH=$PATH:$NCARG_ROOT/bin 可能遇到无法找到库的问题,应根据实际情况安装相应库
计算风场的散度
<散度> = uv2dvG_Wrap(<u风>, <v风>)
14
10年9月9日星期四
NCL基本语言特性
文档:/Document/ 类似Fortran、C,不过是脚本 主要步骤:
• • • •
载入脚本 读入数据 处理数据 图形显示
do i = 0, n-1 end do
执行脚本: