[ncl-talk] Trying to plot streamlines using WRF data, streamlines are not in the correct part of the plot
Mary Haley
haley at ucar.edu
Thu Apr 9 22:51:01 MDT 2015
Hi Craig,
You are using the generic "gsn_streamline_scalar_map" function, which
doesn't look for the special lat2d/lon2d attributes.
If you have NCL V6.3.0 installed, then you can use
gsn_csm_streamline_scalar_map, which should recognize these special
attributes.
I created a simple example for you. See example wrf_gsn_8.ncl at:
http://www.ncl.ucar.edu/Applications/wrfgsn.shtml#ex8
--Mary
On Thu, Apr 9, 2015 at 3:17 PM, Craig Tierney - NOAA Affiliate <
craig.tierney at noaa.gov> wrote:
> Hello,
>
> After some good help from some list members, I believe that I am setting
> up the resources for plotting WRF data without the WRF functions.
> However, I still get no streamlines in my plot, or at least not in the
> correct place.
>
> I am using NCL 6.1.2. My WRF domain is close to CONUS. The domain is
> LambertConformal and I am setting the mapping properties stored in the
> Global section of the NetCDF file to the appropriate variables for the LC
> mapping. To draw the streamlines, I am basing my code off of the example
> here:
>
> https://www.ncl.ucar.edu/Applications/Scripts/gsn_stream_4.ncl
>
> I read in the data, massage it, then try and plot it. When I plot the
> speed, u1, or v1 arrays with contour:
>
> contour = gsn_csm_contour_map(wks,speed,res)
>
> I get what I would want, a contour of that variable with the bounds of
> the plot that of my domain. When I try the same thing to create a
> streamline plot:
>
> plot = gsn_streamline_scalar_map(wks,u1,v1,speed,res)
>
> I get nothing. When I remove setting the Corners of the domain by
> commenting out the following:
>
> res at mpRightCornerLatF = lat2d(0,0)
> res at mpRightCornerLonF = lon2d(0,0)
> res at mpLeftCornerLatF = lat2d(nlat-1,nlon-1)
> res at mpLeftCornerLonF = lon2d(nlat-1,nlon-1)
> res at mpLimitMode = "Corners"
>
> I get streamlines, but they are between 0E and 225E and 0N to 90N. For
> the CONUS domain I am using the corners are about (138W,21N) and
> (298W,47N). Something is being calculated, but not what I was expecting.
>
> Any ideas are appreciated.
>
> Thanks,
> Craig
>
> 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"
>
> begin
> ;---Open WRF output file.
> dir =
> "/scratch2/portfolios/BMC/winds/Craig.Tierney/theia/wrf/windswrf/trunk/conusplus-wrf-6day/201308010000/nowfp-nocu/wrf/"
> filename = "wrfout_d01_2013-08-04_00:00:00"
> a = addfile(dir + filename + ".nc","r")
>
> ;---Read terrain height and lat/lon off file.
> it = 0 ; first time step
> du1 = wrf_user_getvar(a,"U10",it) ; Terrain elevation
> dv1 = wrf_user_getvar(a,"V10",it) ; Terrain elevation
> dlon2d=wrf_user_getvar(a,"XLONG",it)
> dlat2d=wrf_user_getvar(a,"XLAT",it)
>
> ; Down sample hack
> d=dimsizes(du1)
> nx=d(0)
> ny=d(1)
> s=8
> u1=du1(0:nx-1:s,0:ny-1:s)
> v1=dv1(0:nx-1:s,0:ny-1:s)
> lat2d=dlat2d(0:nx-1:s,0:ny-1:s)
> lon2d=dlon2d(0:nx-1:s,0:ny-1:s)
>
> u1 at lon2d=lon2d
> u1 at lat2d=lat2d
> v1 at lon2d=lon2d
> v1 at lat2d=lat2d
>
> speed=sqrt(u1*u1+v1*v1)
> speed at lat2d=lat2d
> speed at lon2d=lon2d
>
> wks = gsn_open_wks("png","wrf_gsn")
>
> ;---Set some basic plot options
> res = True
>
> res at gsnMaximize = True ; maximize plot in frame
>
> res at tiMainString = filename
>
> ;res at mpProjection = "CylindricalEquidistant"
> res at mpProjection = "LambertConformal"
>
> res at mpLambertParallel1F = a at TRUELAT1 ; two parallels
> res at mpLambertParallel2F = a at TRUELAT2
> res at mpLambertMeridianF = a at STAND_LON ; central meridian
> res at mpCenterLonF = a at CEN_LON
> res at mpCenterLatF = a at CEN_LAT
>
> d=dimsizes(u1)
> nlat=d(0)
> nlon=d(1)
>
> ;;;; Comment this section out, and we get streamlines, but in the wrong
> place
> ;;;; This is why they don't show up in the zoomed in plot
> ; res at mpRightCornerLatF = lat2d(0,0)
> ; res at mpRightCornerLonF = lon2d(0,0)
> ; res at mpLeftCornerLatF = lat2d(nlat-1,nlon-1)
> ; res at mpLeftCornerLonF = lon2d(nlat-1,nlon-1)
> ; res at mpLimitMode = "Corners"
>
> ;---Additional resources desired
> res at pmTickMarkDisplayMode = "Always" ; nicer tickmarks
>
> res at mpDataBaseVersion = "MediumRes" ; better and more map
> outlines
> res at mpDataSetName = "Earth..4"
> res at mpOutlineBoundarySets = "AllBoundaries"
> res at mpOutlineOn = True
>
> res at lbOrientation = "Vertical"
> res at tiMainOffsetYF = -0.03 ; Move the title down
>
> ;; This is where we decide what to plot
> ptype="contour"
> ; ptype="streamline"
>
> if (ptype .eq. "contour") then
> print("Plotting: "+ptype)
> res at cnFillOn = True
> res at cnFillPalette = "OceanLakeLandSnow"
> res at cnLinesOn = False
> ;contour = gsn_csm_contour_map(wks,speed,res)
> ;contour = gsn_csm_contour_map(wks,u1,res)
> contour = gsn_csm_contour_map(wks,v1,res)
> else
> if (ptype .eq. "streamline") then
> print("Plotting: "+ptype)
> res at pmTickMarkDisplayMode = "Always"
> res at pmLabelBarDisplayMode = "Always"
> res at pmLabelBarOrthogonalPosF = -0.02
> res at pmLabelBarWidthF = 0.1
> res at lbPerimOn = False
>
> plot = gsn_streamline_scalar_map(wks,u1,v1,speed,res)
> else
> print("Unable to plot either contour or streamline: "+ptype)
> exit
> end if
> end if
>
> end
>
>
> _______________________________________________
> ncl-talk mailing list
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20150409/1921343d/attachment.html
More information about the ncl-talk
mailing list