第八星系人气爱 发表于 2024-3-1 10:47:18

NCL基于micaps第4类数据绘制等值线图


作者:第八星系-刘术辉
邮箱:1211284952@qq.com

读取数据
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/contrib/cd_string.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/shea_util.ncl"
load"$NCARG_ROOT/lib/ncarg/nclscripts/wrf/WRFUserARW.ncl"
; load"$NCARG_ROOT/lib/ncarg/nclscripts/cnmap/cnmap.ncl"


begin
; 读取micaps第4类数据,并将除数据以外的部分删掉
aaa="19072120.000"
mdata = asciiread(aaa,-1,"float")
print(mdata)

根据数据维度设置经纬度格点及维度
nlat = 21
nlon = 33
lon = fspan(0,160,nlon);fspan(开始,结束,个数),等间距扩展一列数
lat = fspan(80,12,nlat)
lon2d = onedtond(lon,(/nlat,nlon/));将lon从一维扩展到多维(nlat,nlon)
lat2d = onedtond(lat,(/nlat,nlon/));
shk2d = onedtond(mdata(0::1),(/nlat,nlon/));读数据从第四行读到最后,数据先排一列再排一行
print(shk2d)

给读取的数据赋上经纬度属性、单位
shk2d!0="lat"
shk2d!1="lon"
shk2d&lat = lat
shk2d&lon = lon
shk2d&lat@units="degrees_north"
shk2d&lon@units="degrees_east"

创建绘图空间并输出图片名
wks= gsn_open_wks("png","qfdiv")
gsn_define_colormap(wks,"temp_diff_18lev");设置colorbar颜色
plot=new(1,graphic);将4个图形存为一个数组

为绘制的图添加属性
res = True
res@gsnDraw                        = False
res@gsnFrame                     = False
;res@gsnDraw = True
res@gsnMaximize = True
res@cnFillOn = True
res@cnLinesOn = False
res@gsnAddCyclic = False
res@gsnSpreadColors   = True

res@mpFillOn          = False
res@mpLimitMode       = "LatLon"
res@mpMinLatF          = 26
res@mpMaxLatF          = 34
res@mpMinLonF          = 97
res@mpMaxLonF          = 109
res@mpLambertMeridianF = 105.0
res@pmTickMarkDisplayMode      = "Always" ;自动划分经纬度

res@tmXBLabelFontHeightF = 0.015
res@tmYLLabelFontHeightF = 0.015
res@cnSmoothingOn = True
res@cnSmoothingDistanceF = 0.01
res@cnSmoothingTensionF = 2.5
; res@tmXBOn      =True
; res@tmXBMode    ="Automatic"

; res@tmYLOn      =True
; res@tmYLMode    ="Automatic"

;res@mpGridAndLimbOn      =True
res@mpGridLineDashPattern = 5
res@mpGridSpacingF      = 5
res@mpOutlineOn         = True
res@mpDataSetName         = "Earth..4"   
res@mpDataBaseVersion   = "MediumRes"
res@mpOutlineSpecifiers   = (/"China:states"/)
res@mpUSStateLineThicknessF   = 2
res@mpUSStateLineColor      = "Black"
res@cnLevelSelectionMode       = "ExplicitLevels"
; res@cnLevels                   = fspan(0,100,10)
; res@cnLevels = (/50,60,70,80,90,100/)

绘图
plot = gsn_csm_contour_map(wks, shk2d,res)
   ;resk = True
;gsn_panel(wks,plot,(/1,1/),resk)
printVarSummary(shk2d)
draw(plot)
frame(wks)
    end

完整代码
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/contrib/cd_string.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/shea_util.ncl"
load"$NCARG_ROOT/lib/ncarg/nclscripts/wrf/WRFUserARW.ncl"
; load"$NCARG_ROOT/lib/ncarg/nclscripts/cnmap/cnmap.ncl"


begin
; 读取micaps第4类数据,并将除数据以外的部分删掉
aaa="19072120.000"
mdata = asciiread(aaa,-1,"float")
print(mdata)

; 根据数据维度设置经纬度格点及维度
nlat = 21
nlon = 33
lon = fspan(0,160,nlon);fspan(开始,结束,个数),等间距扩展一列数
lat = fspan(80,12,nlat)
lon2d = onedtond(lon,(/nlat,nlon/));将lon从一维扩展到多维(nlat,nlon)
lat2d = onedtond(lat,(/nlat,nlon/));
shk2d = onedtond(mdata(0::1),(/nlat,nlon/));读数据从第四行读到最后,数据先排一列再排一行
print(shk2d)

; 给读取的数据赋上经纬度属性、单位
shk2d!0="lat"
shk2d!1="lon"
shk2d&lat = lat
shk2d&lon = lon
shk2d&lat@units="degrees_north"
shk2d&lon@units="degrees_east"

; 创建绘图空间并输出图片名为qfdiv.png
wks= gsn_open_wks("png","qfdiv")
gsn_define_colormap(wks,"temp_diff_18lev");设置colorbar颜色
plot=new(1,graphic);将4个图形存为一个数组

; 为绘制的图设置属性
res = True
res@gsnDraw                        = False
res@gsnFrame                     = False
;res@gsnDraw = True
res@gsnMaximize = True
res@cnFillOn = True
res@cnLinesOn = False
res@gsnAddCyclic = False
res@gsnSpreadColors   = True

res@mpFillOn          = False
res@mpLimitMode       = "LatLon"
res@mpMinLatF          = 26
res@mpMaxLatF          = 34
res@mpMinLonF          = 97
res@mpMaxLonF          = 109
res@mpLambertMeridianF = 105.0
res@pmTickMarkDisplayMode      = "Always" ;自动划分经纬度

res@tmXBLabelFontHeightF = 0.015
res@tmYLLabelFontHeightF = 0.015
res@cnSmoothingOn = True
res@cnSmoothingDistanceF = 0.01
res@cnSmoothingTensionF = 2.5
; res@tmXBOn      =True
; res@tmXBMode    ="Automatic"

; res@tmYLOn      =True
; res@tmYLMode    ="Automatic"

;res@mpGridAndLimbOn      =True
res@mpGridLineDashPattern = 5
res@mpGridSpacingF      = 5
res@mpOutlineOn         = True
res@mpDataSetName         = "Earth..4"   
res@mpDataBaseVersion   = "MediumRes"
res@mpOutlineSpecifiers   = (/"China:states"/)
res@mpUSStateLineThicknessF   = 2
res@mpUSStateLineColor      = "Black"
res@cnLevelSelectionMode       = "ExplicitLevels"
; res@cnLevels                   = fspan(0,100,10)
; res@cnLevels = (/50,60,70,80,90,100/)

plot = gsn_csm_contour_map(wks, shk2d,res)
   ;resk = True
;gsn_panel(wks,plot,(/1,1/),resk)
printVarSummary(shk2d)
draw(plot)
frame(wks)
    end

微信搜索“第八星系人造大气理论爱好者”公众号,关注获取文章数据

KennethSte 发表于 2024-4-27 01:11:34

666

活跃概况 发表于 2024-4-27 07:14:55

顶一个!
页: [1]
查看完整版本: NCL基于micaps第4类数据绘制等值线图