ncl 代码:在中国区域,仅需更改所需的met_em文件,即可使用。
转自:https://www2.mmm.ucar.edu/wrf/OnLineTutorial/Graphics/NCL/Examples/EXPERIMENTAL/wrf_overlay_doms.ncl
; Overlay information from 2 domains
; November 2009
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/wrf/WRFUserARW.ncl"
;load "./WRFUserARW.ncl"
begin
wks = gsn_open_wks("x11", "wrf_overlay_doms") ; Open graphics file
d1 = addfile("/home/hsy/wsof_WRF/WRF-4.2/WPS/met_em.d01.2016-04-01_00:00:00.nc", "r") ;input the met_em data from WPS.
d2 = addfile("/home/hsy/wsof_WRF/WRF-4.2/WPS/met_em.d02.2016-04-01_00:00:00.nc", "r")
;add the location and height of domain 1 and domain 2.
var1 = wrf_user_getvar(d1,"HGT_M",0)
lat1 = wrf_user_getvar(d1,"XLAT",0)
lon1 = wrf_user_getvar(d1,"XLONG",0)
var2 = wrf_user_getvar(d2,"HGT_M",0)
lat2 = wrf_user_getvar(d2,"XLAT",0)
lon2 = wrf_user_getvar(d2,"XLONG",0)
var1@lat2d = lat1
var1@lon2d = lon1
var2@lat2d = lat2
var2@lon2d = lon2
print(dimsizes(var1)) ;print the dimension sizes of the input variable: var1.
print(getVarDimNames(d1) + " : " + dimsizes(d1)) ;print every dimension sizes of the file: d1.
;set the 3d domain to 2d.
dom_dims = dimsizes(var1)
dom_rank = dimsizes(dom_dims)
nx1 = dom_dims(dom_rank - 1) - 1
ny1 = dom_dims(dom_rank - 2) - 1
dom_dims = dimsizes(var2)
dom_rank = dimsizes(dom_dims)
nx2 = dom_dims(dom_rank - 1) - 1
ny2 = dom_dims(dom_rank - 2) - 1
res = True
; Set some contouring resources.
res@cnFillOn = True
res@cnLinesOn = False
res@cnLineLabelsOn = False
res@cnInfoLabelOn = False
res@gsnSpreadColors = True
res@cnLevelSelectionMode = "ExplicitLevels"
res@cnLevels = (/0, 10, 25, 50, 75, 125, 200, 350, 500, 750, \
1000, 1250, 1500, 1750, 2000, 2250, 3000, 3500, 5000, 7000/) ;the intervals of color bars.
res@gsnLeftString = ""
res@gsnRightString = ""
res@gsnDraw = False
res@gsnFrame = False
res2 = res
; Add map resources
res@mpDataBaseVersion = "MediumRes" ; Default is LowRes
res@mpOutlineDrawOrder = "PostDraw" ; Draw map outlines last
res@mpGridAndLimbOn = False ; Turn off lat/lon lines
res@pmTickMarkDisplayMode = "Always" ; Turn on map tickmarks
res = set_mp_wrf_map_resources(d1,res)
res@mpLimitMode = "Corners" ; Portion of map to zoom
res@mpLeftCornerLatF = lat1(0,0)
res@mpLeftCornerLonF = lon1(0,0)
res@mpRightCornerLatF = lat1(ny1,nx1)
res@mpRightCornerLonF = lon1(ny1,nx1)
; Add label bar resources
res@lbLabelAutoStride = True
res@gsnMaximize = True ; Maximize plot in frame
res2@lbLabelBarOn = False ; Labelbar already created in 1st plot
res2@gsnMaximize = False ; Use maximization from original plot
; we need these to later draw boxes for the location of the nest domain
xbox_out = new(5,float)
ybox_out = new(5,float)
lnres = True
lnres@gsLineThicknessF = 1.5
; make images
map = gsn_csm_contour_map(wks, var1, res)
plot = gsn_csm_contour(wks, var2, res2)
; let's make 3 plots
; 1 - the mother domain only
; 2 - the mother and nest domains
; 3 - same as 2, but add a box around domain 2
; PLOT 1
;draw(map)
;frame(wks)
; PLOT 2
overlay (map, plot)
draw(map)
frame(wks)
; PLOT 3
draw(map) ; domain 2 already overlaid here - so just draw again
xbox = (/lon2(0,0),lon2(0,nx2),lon2(ny2,nx2),lon2(ny2,0),lon2(0,0)/)
ybox = (/lat2(0,0),lat2(0,nx2),lat2(ny2,nx2),lat2(ny2,0),lat2(0,0)/)
datatondc(map, xbox, ybox, xbox_out, ybox_out)
gsn_polyline_ndc(wks, xbox_out, ybox_out, lnres)
frame(wks)
end