admin管理员组

文章数量:1530940

2024年6月8日发(作者:)

NCL绘图示例(二):台风路径及风圈图

施宁

(南京信息工程大学 大气科学学院)

begin

ncol = 6

nrow = 31 ;时次总数

; (1) 读入台风资料

path = "./"

data = asciiread(path,(/31,6/),"integer")

amp = data(:,1) ; 强度

lat = data(:,2)/10. ; 纬度

lon = data(:,3)/10. ; 经度

nbin = 6 ;已知该该气旋共经历了6个等级的演变

wks = gsn_open_wks("eps","plot-primitive")

gsn_define_colormap(wks, "tbrAvg1")

cmap = read_colormap_file("tbrAvg1") ;读取色板中的颜色

ncol = dimsizes(cmap(:,0)) ;色板的颜色总数

res = True ; plot mods desired

res@gsnFrame = False

res@gsnDraw = False ; don't draw plot yet

res@mpMinLatF = 5 ; zoom in on a subregion

res@mpMaxLatF = 35

res@mpMinLonF = 110

res@mpMaxLonF = 150

res@mpOutlineOn = True

res@pmTickMarkDisplayMode = "Always"

map = gsn_csm_map(wks,res)

;--添加任意折线,表示出台风路径

lnres = True

lnres@gsLineColor = "black"

lnres@gsLineThicknessF = 1.5

lnres@gsLineDashPattern = 0

str = unique_string("string")

map@$str$ = gsn_add_polyline(wks,map,lon,lat,lnres)

;;添加标识,表示出每个时次的台风中心位置

mkres = True

mkres@gsMarkerSizeF = 0.01 ;大小。在 0~1范围内设置。

mkres@gsMarkerIndex = 3

mkres@gsMarkerThicknessF = 1.5

do i = 0, nrow-1

mkres@gsMarkerColor = toint(floor(ncol/nbin*amp(i)-1)) ;在整个色板中准

等距离的挑选颜色

str = unique_string("string")

map@$str$ = gsn_add_polymarker(wks,map,lon(i),lat(i),mkres)

end do

;--在图形正下方添加等级图例

x_ndc = (/0.25,0.35,0.45,0.55,0.65,0.75/)

y_ndc = (/0.14,0.14,0.14,0.14,0.14,0.14/)

t_ndc = tostring(ispan(1,6,1)) ;假定已知等级为1、2……6

mkres@gsMarkerSizeF = 0.01 ;标识的大小,在 0~1范围内设置。

mkres@gsMarkerThicknessF = 1.5 ;标识的粗细

txres = True

txres@txFontHeightF = 0.02

do i = 0,5 ; 绘制每个等级的图例,它由标识和文本构成

mkres@gsMarkerColor = toint(floor(ncol/nbin*(i+1)-1))

gsn_polymarker_ndc(wks,x_ndc(i),y_ndc(i),mkres)

gsn_text_ndc(wks,t_ndc(i),x_ndc(i)+0.02,y_ndc(i),txres) ;将文本向右边移动

end do

txres@txFontHeightF = 0.03

str = unique_string("string")

txres@txPerimOn = False

map@$str$ = gsn_add_text(wks,map,"Nepartak",135,22,txres)

draw(map)

;--以下绘制第22时次的大致风圈范围:以其中心为圆心,以0.05长度为半径的

圆形区域

xout_ndc = lon

yout_ndc = lat

datatondc(map,lon,lat,xout_ndc,yout_ndc)

degrad = 0.943 ;3.1415926/180

degrees = ispan(0,360,1) ;创建361点

xcos = cos(degrad*degrees) ;各个角度的余弦值

xsin = sin(degrad*degrees) ;各个角度的正弦值

;--圆心点位置及半径

xcenter = xout_ndc(21) ;第22时次中心所在x位置

ycenter = yout_ndc(21) ;第22时次中心所在y位置

radius = 0.05

;--计算出各个点在单位坐标系中的坐标位置

xc = xcenter + (radius * xcos)

yc = ycenter + (radius * xsin)

;--设置多边形的绘图参数,根据单位坐标系中的位置绘制多边形

lnres = True

lnres@gsFillColor = 46

lnres@gsFillOpacityF = 0.5 ;50%透明

lnres@gsFillLineThicknessF = 2. ;多边形边框粗细

gsn_polygon_ndc(wks,xc,yc,lnres)

frame(wks)

end

本文标签: 台风位置风圈时次