[ncl-talk] define infill color for inland water bodies
Matthew Fearon
Matthew.Fearon at dri.edu
Mon Sep 8 16:58:27 MDT 2014
Thanks, Adam and Rick for your continued assistance. What a bear for something so simple. I have a version working. However, it is tied to certain caveats that I don't understand. My full script is below. The cnFillMode resource controls the outcome; RasterFill gives me white water bodies whereas CellFill and AreaFill give me the grey. Also, mpFillOn and mpFillColors never works for me no matter the combination; I always get white water bodies. The use of mpInlandWaterFillColor and the following draw orders work. Perhaps my NCL version has an impact, v6.1.2.
---partial script
;;;mpres at mpFillOn = True
;;;mpres at mpFillColors = (/"transparent","transparent","transparent","grey81"/)
mpres at mpInlandWaterFillColor = "grey81"
mpres at cnFillDrawOrder = "Draw"
mpres at mpFillDrawOrder = "Draw"
mpres at mpOutlineDrawOrder = "PostDraw"
mpres at mpPerimDrawOrder = "PostDraw"
----full script
begin
type = "png"
colors=(/"white","black","grey81","red","green","blue","black"/)
wks = gsn_open_wks(type,pname+ndt)
gsn_define_colormap(wks,colors)
;********************** mpres
mpres = True
mpres at gsnDraw = False
mpres at gsnFrame = False
mpres = wrf_map_resources(f,mpres)
mpres at mpDataBaseVersion = "Ncarg4_1"
mpres at mpDataSetName = "Earth..1"
mpres at mpNationalLineColor = "black"
mpres at mpNationalLineThicknessF = 3.5
mpres at mpGeophysicalLineColor = "black"
mpres at mpGeophysicalLineThicknessF = 3.5
mpres at mpProvincialLineColor = "black"
mpres at mpProvincialLineThicknessF = 3.5
;mpres at mpFillOn = True
;mpres at mpFillColors = (/"transparent","transparent","transparent","grey81"/)
mpres at mpInlandWaterFillColor = "grey81"
mpres at cnFillDrawOrder = "Draw"
mpres at mpFillDrawOrder = "Draw"
mpres at mpOutlineDrawOrder = "PostDraw"
mpres at mpPerimDrawOrder = "PostDraw"
mpres at tfDoNDCOverlay = True
mpres at gsnAddCyclic = False
mpres at cnLinesOn = False
mpres at cnLineLabelsOn = False
mpres at cnInfoLabelOn = False
mpres at cnFillOn = True
;mpres at cnFillMode = "RasterFill"
;mpres at cnRasterSmoothingOn = False
mpres at cnMinLevelValF = 0
mpres at cnMaxLevelValF = 3
mpres at cnLevelSpacingF = 1
mpres at lbLabelBarOn = False
mpres at mpGridLineDashPattern = 2
mpres at tmXBLabelFontHeightF = 0.015
mpres at tmYLLabelFontHeightF = 0.015
mpres at tmXBMajorLengthF = 0.004
mpres at tmXBLabelDeltaF = -0.4
mpres at gsnMaximize = True
mplot = gsn_csm_contour_map(wks,vmap,mpres)
draw(mplot)
frame(wks)
end
________________________________
From: Rick Brownrigg [brownrig at ucar.edu]
Sent: Monday, September 08, 2014 2:12 PM
To: Matthew Fearon
Cc: Adam Phillips; ncl-talk; wrfhelp at ucar.edu
Subject: Re: [ncl-talk] define infill color for inland water bodies
Hi Matthew,
Never mind what I said about commenting out the mpFillColors resource line. I misunderstood what you were trying to do. For what its worth, since I didn't have your data, I slightly modified your script to use just gsn_csm_map(), and I did indeed get an image consisting of only inland water colored in grey81 -- all other areas of the map where "transparent". So I think Adam is right -- it must be a draw-order issue in the presence of data to plot over the map. Unfortunately, I'm not sure what to recommend at this point.
Sorry about that...
Rick
On Mon, Sep 8, 2014 at 3:01 PM, Rick Brownrigg <brownrig at ucar.edu<mailto:brownrig at ucar.edu>> wrote:
I got a different result when I commented out this line:
mpres at mpFillColors = (/"transparent","transparent","transparent","grey81"/)
On Mon, Sep 8, 2014 at 2:28 PM, Matthew Fearon <Matthew.Fearon at dri.edu<mailto:Matthew.Fearon at dri.edu>> wrote:
Thanks, Adam for your note, but unfortunately I tried your suggestion with no luck. The inland water bodies remain white. Therefore, I revised my code to NOT use wrf* functions, but I am still struggling with the white inland water bodies rather than grey. Any ideas what I am missing? I am using wrf_map_resources to set some resources, but it shouldn't overwrite like wrf_map_overlays. Here's my revised script:
begin
;type = "ps"
type = "png"
colors=(/"white","black","grey81","red","green","blue","black"/)
wks = gsn_open_wks(type,pname+ndt)
gsn_define_colormap(wks,colors)
;********************** mpres
mpres = True
mpres at gsnDraw = False
mpres at gsnFrame = False
mpres = wrf_map_resources(f,mpres)
mpres at mpDataBaseVersion = "Ncarg4_1"
mpres at mpDataSetName = "Earth..1"
mpres at mpNationalLineColor = "black"
mpres at mpNationalLineThicknessF = 3.5
mpres at mpGeophysicalLineColor = "black"
mpres at mpGeophysicalLineThicknessF = 3.5
mpres at mpProvincialLineColor = "black"
mpres at mpProvincialLineThicknessF = 3.5
mpres at mpFillOn = True
mpres at mpFillColors = (/"transparent","transparent","transparent","grey81"/)
mpres at mpFillDrawOrder = "PostDraw"
;mpres at mpInlandWaterFillColor = "grey81"
;mpres at mpOceanFillColor = "grey81"
;mpres at mpLandFillColor = "grey81"
mpres at tfDoNDCOverlay = True
mpres at gsnAddCyclic = False
mpres at cnLinesOn = False
mpres at cnLineLabelsOn = False
mpres at cnInfoLabelOn = False
mpres at cnFillOn = True
mpres at cnFillMode = "RasterFill"
mpres at cnRasterSmoothingOn = False
mpres at cnMinLevelValF = 0
mpres at cnMaxLevelValF = 3
mpres at cnLevelSpacingF = 1
mpres at lbLabelBarOn = False
mpres at mpGridLineDashPattern = 2
mpres at tmXBLabelFontHeightF = 0.015
mpres at tmYLLabelFontHeightF = 0.015
mpres at tmXBMajorLengthF = 0.004
mpres at tmXBLabelDeltaF = -0.4
mpres at gsnMaximize = True
mplot = gsn_csm_contour_map(wks,vmap,mpres)
draw(mplot)
frame(wks)
________________________________
From: Adam Phillips [asphilli at ucar.edu<mailto:asphilli at ucar.edu>]
Sent: Monday, September 08, 2014 8:05 AM
To: Dennis Shea
Cc: Matthew Fearon; ncl-talk; wrfhelp at ucar.edu<mailto:wrfhelp at ucar.edu>
Subject: Re: [ncl-talk] define infill color for inland water bodies
Hi Matthew,
Both Kyle and Dennis are correct in that the wrf* functions can overrule or ignore some resources. However, I have one more combination of resources for you to try. I see that you are color filling your contours and that you'd like the inland lakes to be filled gray. In order to do this you'd want to draw the map fill last, and set all map fill colors (default, ocean, land) to transparent other than inland water. I am also having you set the contour color fill draw order to "Draw" to further make sure that the map fill is drawn after the contour color fill.
Try this:
; note that you could have set mpLandFillColor, mpOceanFIllColor, etc. instead of
; mpFillColors
mpres at mpFillColors = (/"transparent","transparent","transparent","grey81"/)
mpres at mpFillDrawOrder = "PostDraw"
var3_res at cnFillDrawOrder = "Draw" ; might not be needed
If the above combination does not work, then I would follow Dennis' suggestions of either contacting wrf-help or stripping wrf_map_overlays out and modifying it to your own needs.
Adam
On Mon, Sep 8, 2014 at 7:45 AM, Dennis Shea <shea at ucar.edu<mailto:shea at ucar.edu>> wrote:
The wrf_* were written by wrfhelp. You should send questions to wrfhelp at ucar.edu<mailto:wrfhelp at ucar.edu> on all of these functions. You can cc ncl-talk at ucar.edu<mailto:ncl-talk at ucar.edu>
As noted, the resources may not be allowed or are overwritten by the wrf code.
I'd suggest extracting the function from the library, modifying the function and then calling the modified function.
Good luck
On Sun, Sep 7, 2014 at 11:10 PM, Kyle Griffin <ksgriffin2 at wisc.edu<mailto:ksgriffin2 at wisc.edu>> wrote:
Although I'm not certain, most WRF plotting scripts overwrite many of the more complicated resources. It sounds like these map fill resources are included in the list that they either don't recognize or overwrite.
Kyle
On Sep 7, 2014 8:27 PM, "Matthew Fearon" <Matthew.Fearon at dri.edu<mailto:Matthew.Fearon at dri.edu>> wrote:
Thanks, Kyle, but I'm missing something still. My script is below. The wrf_map_overlays function is perhaps messing up the draw order or recoloring inland water bodies white. Any ideas?
type = "png"
wks = gsn_open_wks(type,pname+ndt)
gsn_define_colormap(wks,"MPL_terrain")
res = True
res at NoHeaderFooter = True
mpres = True
mpres at mpDataBaseVersion = "Ncarg4_0"
mpres at mpDataSetName = "Earth..1"
mpres at mpNationalLineColor = "black"
mpres at mpNationalLineThicknessF = 2
mpres at mpGeophysicalLineColor = "black"
mpres at mpGeophysicalLineThicknessF = 2
mpres at mpProvincialLineColor = "black"
mpres at mpProvincialLineThicknessF = 3
;mpres at mpFillOn = True
;mpres at mpFillDrawOrder = "PreDraw"
mpres at mpInlandWaterFillColor = "grey81"
mpres at mpOceanFillColor = "grey81"
mpres at mpLandFillColor = "grey81"
pltres = True
var3_res = res
var3_res at ContourParameters = (/ 0, 3, 1 /)
var3_res at cnFillMode = "RasterFill"
var3_res at cnFillOn = True
var3_res at cnRasterSmoothingOn = False
var3_res at cnFillColors = (/"grey81","red","green","blue","black"/)
var3_res at cnFillDrawOrder = "Draw"
con3_var = wrf_contour(f,wks,vmap,var3_res)
pltres at CommonTitle = True
pltres at PlotTitle = ndt
plot = wrf_map_overlays(f,wks,(/con3_var/),pltres,mpres)
________________________________
From: windrunnerxc at gmail.com<mailto:windrunnerxc at gmail.com> [windrunnerxc at gmail.com<mailto:windrunnerxc at gmail.com>] on behalf of Kyle Griffin [ksgriffin2 at wisc.edu<mailto:ksgriffin2 at wisc.edu>]
Sent: Sunday, September 07, 2014 5:33 PM
To: Matthew Fearon; ncl-talk
Subject: Re: [ncl-talk] define infill color for inland water bodies
Don't use mpFillColor. Use a combination of mpLandFillColor, mpOceanFillColor, and mpInlandWaterFillColor. These are your desired resources.
Kyle
On Sep 7, 2014 4:56 PM, "Matthew Fearon" <Matthew.Fearon at dri.edu<mailto:Matthew.Fearon at dri.edu>> wrote:
Dear NCL Users,
What is the correct method for filling in inland water bodies with a specified color. Here's the resources I have been experimenting with, but none seem to work, eg, inland lakes are consistently colored white not grey81. Thanks, Matt
mpres = True
;mpres at mpDataBaseVersion = "Ncarg4_0"
;mpres at mpDataSetName = "Earth..4"
mpres at mpNationalLineColor = "black"
mpres at mpNationalLineThicknessF = 2
mpres at mpGeophysicalLineColor = "black"
mpres at mpGeophysicalLineThicknessF = 2
mpres at mpProvincialLineColor = "black"
mpres at mpProvincialLineThicknessF = 3
mpres at mpFillOn = True
mpres at mpMonoFillColor = True
mpres at mpFillColor = "grey81"
mpres at mpFillAreaSpecifiers = "water" ;"inlandwater"
mpres at mpSpecifiedFillColors = "grey81"
_______________________________________________
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
_______________________________________________
ncl-talk mailing list
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
--
Adam Phillips
Associate Scientist, Climate and Global Dynamics Division, NCAR
www.cgd.ucar.edu/staff/asphilli/<http://www.cgd.ucar.edu/staff/asphilli/> 303-497-1726<tel:303-497-1726>
<http://www.cgd.ucar.edu/staff/asphilli>
_______________________________________________
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/20140908/6df75b38/attachment.html
More information about the ncl-talk
mailing list