[ncl-talk] Trying to plot WRF data without using built-in WRF functions

Alexander Schaefer alexander.schaefer at mines.sdsmt.edu
Fri Apr 10 00:12:40 MDT 2015


Hi Mary,

Craig was having some of the same issues I was having when I was starting
specialization of plots. I remember using the wrf_map_resources function
worked well when using the wrf plot functions but moving to gsn plots it
didn't work well.

In my opinion, the wrf_map_resources function works well when first
starting to try to get plots but is more of a hassle when doing a lot of
plot specialization. I haven't used it in awhile and am still in the stone
age of 6.1.2 so maybe it has gotten better since then.

I feel it just comes down to personal preference, I haven't dug into the
code to see everything it sets but I have just found that setting it myself
provides me better control of the plots.

I am rather curious why it ends up causing some issues.

-Alex

On Thursday, April 9, 2015, Mary Haley <haley at ucar.edu> wrote:

> Craig and Alex,
>
> Along the same lines here, and my apologies if this was already mentioned,
> but you can try the "wrf_map_resources" function, which attaches all the
> necessary NCL map resources to correctly plot a WRF grid natively.
>
> So, for example, if you opened the wrf file with:
>
> a = addfile("wrfoutxxxxx","r")
>
> Then you can set a bunch of NCL "mp" resources pertaining to the map
> projection on this file with:
>
>     res = wrf_map_resources(a,res)
>
> You still need to add:
>
>   res at tfDoNDCOverlay
>
> if you are not reading in lat/lon and setting them via lat2d/lon2d.
> That's redundant anyway, because when you use the WRF map projection on the
> file, you don't need the lat2d/lon2d.
>
> You can see a complete example code at:
>
> http://www.ncl.ucar.edu/Document/Functions/WRF_arw/wrf_map_resources.shtml
>
> --Mary
>
>
> On Thu, Apr 9, 2015 at 12:31 PM, Craig Tierney - NOAA Affiliate <
> craig.tierney at noaa.gov
> <javascript:_e(%7B%7D,'cvml','craig.tierney at noaa.gov');>> wrote:
>
>> Alex,
>>
>> Thanks for the help.  This did the trick.
>>
>> Craig
>>
>>
>> On Thu, Apr 9, 2015 at 11:44 AM, Alexander Schaefer <
>> alexander.schaefer at mines.sdsmt.edu
>> <javascript:_e(%7B%7D,'cvml','alexander.schaefer at mines.sdsmt.edu');>>
>> wrote:
>>
>>> Hi Craig,
>>>
>>> I do a lot of specializing of my plots with my WRF data so I have
>>> strayed from using the wrf functions except getvar since it has a bunch of
>>> diagnostic variables.  When I do my map projection, which is also
>>> LambertConformal I set all of the following resources as such:
>>>
>>>     lat = wrf_user_getvar(a,"lat", it)
>>>     lon = wrf_user_getvar(a,"lat", it)
>>>
>>>     pltres = True
>>>     projres = res
>>>     projres at mpProjection                            = "LambertConformal"
>>>     projres at mpRightCornerLatF                 = lat(0,0)
>>>     projres at mpRightCornerLonF                = lon(0,0)
>>>     projres at mpLeftCornerLatF                   = lat(nlon-1,nlat-1)
>>>     projres at mpLeftCornerLonF                  = lon(nlon-1,nlat-1)
>>>     projres at mpLambertParallel1F               = a at TRUELAT1
>>>     projres at mpLambertParallel2F               = a at TRUELAT2
>>>     projres at mpLambertMeridianF               = a at STAND_LON
>>>     projres at mpCenterLonF                         = a at CEN_LON
>>>     projres at mpCenterLatF                          = a at CEN_LAT
>>>     projres at mpLimitMode                           = "Corners"
>>>     projres at pmTickMarkDisplayMode        = "Always"
>>>     projres at mpDataBaseVersion                  = "Ncarg4_1"
>>>     projres at mpDataSetName                      = "Earth..4"
>>>     projres at mpOutlineBoundarySets            = "AllBoundaries" ; all
>>> boundaries
>>>     projres at mpNationalLineThicknessF        =  1.0
>>>     projres at mpGeophysicalLineThicknessF  =  1.0
>>>     projres at mpUSStateLineThicknessF        =  2.0
>>>
>>> I have altered the options so you should be able to just paste it into
>>> your script.  This is a piece that I copy into all of my map scripts.
>>>
>>> I will then usually do other resources such as contour or vector or
>>> streamlines and to keep the projection in mind instead of setting
>>> "contres", contour resources equal to true, set it equal to projres and
>>> then continue adding resources.
>>>
>>> Hope that helps.
>>>
>>> -Alex
>>>
>>> On Thu, Apr 9, 2015 at 11:07 AM, Craig Tierney - NOAA Affiliate <
>>> craig.tierney at noaa.gov
>>> <javascript:_e(%7B%7D,'cvml','craig.tierney at noaa.gov');>> wrote:
>>>
>>>> Hello,
>>>>
>>>> I am trying to plot WRF data using NCL 6.1.2 without using the built-in
>>>> WRF functions.  The reason I am doing this is because what I really want to
>>>> do is plot streamlines, and when I had problems doing that I tried to
>>>> simplify what I was doing first.
>>>>
>>>> I found the examples page for plotting WRF using the gsn functions.  I
>>>> started with the wrf_gsn_2.ncl example.  All I did was change the WRF input
>>>> file to point to mine. The output looked like the map was
>>>> CylindralEquidistant (the specified mapping) but the data are in
>>>> LambertConformal, so the height field is not plotted as rectangular.  So
>>>> you get the curved shape of my domain on the rectangular map where the
>>>> lines of latitude are horizontal.   This isn't want I want, but the script
>>>> seems to be doing what it should for my domain.
>>>>
>>>> What I found strange is that when I looked at the output of
>>>> wrf_map_resources, that it says the Projection is LambertConformal.
>>>>
>>>> So I tried changing the mpProjection to LambertConformal.  When I did
>>>> this I got something that looked more StereoGraphic.  The plot was centered
>>>> at the north pole.
>>>>
>>>> When I compare the output of wrf_map_resources between this script and
>>>> my script that uses wrf_map_overlays, the contents are identical.
>>>>
>>>> So how do I get NCL to plot my data using the GSN functions in the same
>>>> projection as using wrf_map_overlays?
>>>>
>>>> Here is the script that I ran:
>>>>
>>>> ;----------------------------------------------------------------------
>>>> ; wrf_gsn_2.ncl
>>>> ;----------------------------------------------------------------------
>>>> ; Concepts illustrated:
>>>> ;   - Using gsn_csm_contour_map to plot WRF-ARW data
>>>> ;----------------------------------------------------------------------
>>>> ; This example is similar to wrf_gsn_1.ncl, except more plot resources
>>>> ; are set to:
>>>> ;   - explicitly set the contour levels
>>>> ;   - change the look of the map outlines
>>>> ;   - change the color map
>>>> ;   - make the labelbar vertical
>>>> ;----------------------------------------------------------------------;
>>>> 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
>>>>   hgt       = wrf_user_getvar(a,"HGT",it)    ; Terrain elevation
>>>>   hgt at lat2d = wrf_user_getvar(a,"XLAT",it)   ; latitude/longitude
>>>>   hgt at lon2d = wrf_user_getvar(a,"XLONG",it)  ; required for plotting
>>>>
>>>>   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 cnFillOn      = True
>>>>   res at cnFillPalette = "OceanLakeLandSnow"
>>>>   res at cnLinesOn     = False
>>>>
>>>>  res at mpProjection = "CylindricalEquidistant"
>>>> ;  res at mpProjection  = "LambertConformal"
>>>>
>>>> ;---Zoom in on plot
>>>>   res at mpMinLatF     = min(hgt at lat2d)
>>>>   res at mpMaxLatF     = max(hgt at lat2d)
>>>>   res at mpMinLonF     = min(hgt at lon2d)
>>>>   res at mpMaxLonF     = max(hgt at lon2d)
>>>>
>>>> ;---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
>>>>
>>>> ;---Change contour levels to better match the color map being used
>>>>   res at cnLevelSelectionMode = "ExplicitLevels"
>>>>   res at cnLevels =
>>>> (/2,100,200,400,600,800,1000,1200,1400,1600,1800,2000,2200/)
>>>>
>>>>
>>>>   contour = gsn_csm_contour_map(wks,hgt,res)
>>>>
>>>> ;
>>>> ; This is for debugging purposes only. It shows what map resources the
>>>> ; wrf_map_overlays routine would have use, if you had called that
>>>> routine
>>>> ; to do the plotting. This can be useful if you are trying to reproduce
>>>> ; an original WRF-ARW plot.
>>>> ;
>>>>   dbgres = True
>>>>   dbgres = wrf_map_resources(a,dbgres)
>>>>   print(dbgres)
>>>> end
>>>>
>>>> Craig
>>>>
>>>>
>>>> _______________________________________________
>>>> ncl-talk mailing list
>>>> List instructions, subscriber options, unsubscribe:
>>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>>
>>>>
>>>
>>
>> _______________________________________________
>> 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/20150410/774f5162/attachment.html 


More information about the ncl-talk mailing list