绘制你的第一张地图¶

多数NCL初学者,在接触NCL前对NCL的印象限于绘图语言。为了保持学习的趣味性,教程也

首先从NCL绘制一张地图开始,学习NCL的基本编程风格。

载入函数库¶

NCL中除去标准库外,绘图的的函数库是专门的,需要在使用前先载入到命名空间。

NCL中有两类绘图函数,一类是gsn函数,另一类是gsn_csm函数,gsn_csm函数是在gsn函数上

风格化定制的高级接口,通常来说我们更愿意选择gsn_csm函数来绘图图形。

使用 load 关键词来载入NCL函数库的语法如下

load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"

load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"

load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"

注解

NCL 6.2.0版本开始自动地载入了以上的三个常用库文件,因此除非你想让自己的代码也能在较旧的NCL版本上成功执行,一般地,你并不需要再载入这三个库了。

开始一个代码块¶

NCL使用 begin 和 end 关键词来封装一段代码,这不是必须的,你大可

不写 begin 和 end。使用它们的好处在于被其封装的代码块被执行前首

先会进行语法检查,并及时抛出异常。这可以让你较早发现代码错误,而不是在执行到错误

时才了解到代码的语法问题。

begin

注解

为了让代码可读性变得更好,我建议对代码块代码进行同级缩进。

打开绘图工作台¶

绘图工作台指的是一个图形文件或X11窗口,这就好比我们使用绘图软件PhotoShop绘图前需

要创建一个画板。使用 gsn_open_wks 函数来打开一个工作台,其使用方法是,

wks = gsn_open_wks(type, filename)

其中type接受一个字符串参数作为工作台的类型,如”X11”, “png”, “eps”等等。

而filename接受一个字符串参数作为工作台的标题或者文件名。

定义源变量和属性¶

通常绘图函数使用一个布尔型变量来控制输出图形的细节,这个布尔型变量被称作源变量(resources),当源变量赋值为NCL逻辑真时,可以给源变量赋予各种属性来调整图形的各个

细节。给变量赋予属性使用 @ 标点。NCL中有着纷繁复杂的源变量属性,这对于新手来说

简直就是一个灾难,因为在开始时,你很难了解每个源变量属性的含义。但是如果你搞清楚

了NCL源变量属性的命名规则,相信能给你带来很大的帮助。

res = True ; 定义源变量,赋值为真

res@mpMinLonF = 100. ; 定义源变量的mpMinLonF属性,赋值为100.

res@mpMaxLonF = 180.

res@mpMinLatF = 0.

res@mpMaxLatF = 50.

在以上的代码中,我们给源变量赋予了四个属性,它们分别控制地图的起始和结束的经度、

纬度。属性中的 mp 代表了这个属性控制地图,而最后的 F 代表了这个

属性的类型是浮点数。

使用绘图函数绘制空白地图¶

NCL中有许多的绘图函数来绘制不同类型的图,包括非地图类和地图类等。比如当你需要绘制

等值线时,你需要使用的绘图函数名中必须有contour,而绘制风场箭头时,则是vector。

所有的绘图函数可以查阅官网,传送门。

在这里,我们使用一个最常用的地图绘图函数 gsn_csm_map_ce 来绘制一张

Cylindrical equidistant (ce后缀) 投影的空白地图。

plot = gsn_csm_map_ce(wks, res)

这个绘图函数接受两个参数,

第一个参数是控制台变量,代表了这个地图图层将被增加到wks工作台中

第二个参数是源变量,代表了用res这个源变量来控制这个地图图层的细节。

结束一个代码块¶

end

通过以上的几句代码,你就绘制了一张东半球大平洋地区的地图。你可以随意更改四个源变

量属性的值将地图缩放到不同大小的地区。当然,如果是全球的话,你大可以直接将

plot = gsn_csm_map_ce(wks, res) 改写为

plot = gsn_csm_map_ce(wks, False)

注意这里我们之间将图形函数的第二参数,也就是源变量的值设置为 False 了,

这代表使用函数 gsn_csm_map_ce 默认的图形属性设置。

以下代码可复制到NCL命令行中测试

begin

wks = gsn_open_wks("X11", "first_map")

res = True

res@mpMinLonF = 100.

res@mpMaxLonF = 180.

res@mpMinLatF = 0.

res@mpMaxLatF = 50.

plot = gsn_csm_map_ce(wks, res)

end

生成的图形

评论¶

Copyright © 2088 炼狱狂骨活动中心_暗黑风格游戏_装备掉落 All Rights Reserved.
友情链接