Re: overlaying gradient contours

From: Adam Phillips <asphilli_at_nyahnyahspammersnyahnyah>
Date: Fri, 14 Aug 2009 10:11:49 -0600

Hi Chris,
 From what you sent in the original email:

>>> Variable: u
>>> Type: float
>>> Total Size: 42048 bytes
>>> 10512 values
>>> Number of Dimensions: 2
>>> Dimensions and sizes: [lat | 73] x [lon | 144]
>>> Coordinates:
>>> lat: [90..-90] <================= latitude coordinate
variable
>>> lon: [ 0..357.5] <=============== longitude coordinate
variable
>>> Number Of Attributes: 15

The latitude and longitude coordinate information is attached to the u /
v arrays. So you should be good to go there. However, NCL also needs the
units attribute of the latitude/longitude coordinate variables to be set
as well. The units attribute is usually set in the netCDF file, but not
always. The "Data either does not contain a valid latitude coordinate
array or doesn't contain one at all." error message is an indication
that this might be the problem.

Try this:

   dir = "/home/cgf/projects/"
  f = addfile (dir+"uwnd200.nc", "r")
  u = f->uwnd ; (lat,lon)
  f2 = addfile (dir+"vwnd200.nc", "r")
  v = f2->vwnd

u&lat_at_units = "degrees_north"
u&lon_at_units = "degrees_east"
v&lat_at_units = "degrees_north"
v&lon_at_units = "degrees_east"
udiv=u
vdiv=v
gradsf(u,udiv,vdiv)

; plot as normal

There is a FAQ written for that specific error message, if you'd like to
learn more:
http://www.ncl.ucar.edu/FAQ/#err_msgs_012

Let us know if that doesn't fix your issue.
Best regards,
Adam

Chris Fletcher wrote:
> Thanks for your reply. I removed the lines as suggested but I still get
> the same problem, and warning about "Data either does not contain a
> valid latitude coordinate array or doesn't contain one at all."
>
> I'm still unclear about the lat/lon2d arrays for this grid. Are they
> required? If so, should I create them on the fly (I don't think they
> are available to be read from the data file), then assign them using
> u_at_lon2d and u_at_lat2d?
>
> On Fri, 2009-08-14 at 08:07 -0600, Dennis Shea wrote:
>> [1]
>> These are *not* two-dimensional latitude or longitude arrays.
>> The variables u and vdiv are two-dimensiona BUT the
>> coordinate variables are classic netCDF one dimensional
>> coordinates.
>>
>> By Unidata/netCDF definition a "coordinate variable"
>> is a one-dimensional array of monotonically {in/de}creasing
>> values"
>>
>> Variable: u
>> Type: float
>> Total Size: 42048 bytes
>> 10512 values
>> Number of Dimensions: 2
>> Dimensions and sizes: [lat | 73] x [lon | 144]
>> Coordinates:
>> lat: [90..-90] <=== coord variable
>> lon: [ 0..357.5] <=== coord variable
>>
>>
>> Remove:
>> lat2d = f->lat
>> lon2d = f->lon
>> printVarSummary(lat2d)
>> printVarSummary(lon2d)
>>
>> u_at_lon2d=lon2d
>> u_at_lat2d=lat2d
>> v_at_lon2d=lon2d
>> v_at_lat2d=lat2d
>>
>> [2] Delete or comment the following
>>
>> res1_at_mpMinLonF = 0. ; select a subregion
>> res1_at_mpMaxLonF = 360.
>> res1_at_mpMinLatF = -90.
>> res1_at_mpMaxLatF = 90.
>>
>> The default is a global grid.
>>
>> ======================================
>> Good luck
>>
>>
>> Chris Fletcher wrote:
>>> Hi, question from a new user:
>>>
>>> I am trying to use gsn_csm_contour_map_overlay to display an NCEP/NCAR
>>> reanalysis wind field (shaded) and its meridional gradient (contour).
>>>
>>> However, the contour data won't plot correctly (it appears compressed
>>> into a smaller region in the top-right -- see attached). I believe the
>>> lon/lat2d variables and their "units" attribute are defined correctly
>>> (although the warnings suggest otherwise). The problem appears to be
>>> that the gradsf procedure modifies the coordinates somehow, because I
>>> can contour overlay the wind field with itself without a problem.
>>>
>>> Thanks in advance, all the output follows.
>>> Chris
>>>
>>>
>>>
>>> I see the following warnings from my script:
>>> (0) is_valid_latlon2d_attr: Warning: The 'lat2d' attribute must
>>> either be the same dimension sizes as the data, or one element larger in
>>> both directions. Your data will most likely not be overlaid on the map
>>> correctly.
>>> (0) is_valid_latlon2d_attr: Warning: The 'lon2d' attribute must
>>> either be the same dimension sizes as the data, or one element larger in
>>> both directions. Your data will most likely not be overlaid on the map
>>> correctly.
>>> (0) check_for_y_lat_coord: Warning: Data either does not contain a
>>> valid latitude coordinate array or doesn't contain one at all.
>>> (0) A valid latitude coordinate array should have a 'units' attribute
>>> equal to one of the following values:
>>> (0) 'degrees_north' 'degrees-north' 'degree_north' 'degrees
>>> north' 'degrees_N' 'Degrees_north' 'degree_N' 'degreeN' 'degreesN' 'deg
>>> north'
>>> (0) check_for_lon_coord: Warning: Data either does not contain a
>>> valid longitude coordinate array or doesn't contain one at all.
>>> (0) A valid longitude coordinate array should have a 'units'
>>> attribute equal to one of the following values:
>>> (0) 'degrees_east' 'degrees-east' 'degree_east' 'degrees east'
>>> 'degrees_E' 'Degrees_east' 'degree_E' 'degreeE' 'degreesE' 'deg east'
>>>
>>>
>>>
>>> ;Here are the details from printVarSummary
>>> ;***********************************************
>>> Variable: lat2d
>>> Type: float
>>> Total Size: 292 bytes
>>> 73 values
>>> Number of Dimensions: 1
>>> Dimensions and sizes: [lat | 73]
>>> Coordinates:
>>> lat: [90..-90]
>>> Number Of Attributes: 3
>>> units : degrees_north
>>> actual_range : ( 90, -90 )
>>> long_name : Latitude
>>>
>>>
>>> Variable: lon2d
>>> Type: float
>>> Total Size: 576 bytes
>>> 144 values
>>> Number of Dimensions: 1
>>> Dimensions and sizes: [lon | 144]
>>> Coordinates:
>>> lon: [ 0..357.5]
>>> Number Of Attributes: 3
>>> units : degrees_east
>>> long_name : Longitude
>>> actual_range : ( 0, 357.5 )
>>>
>>>
>>> Variable: u
>>> Type: float
>>> Total Size: 42048 bytes
>>> 10512 values
>>> Number of Dimensions: 2
>>> Dimensions and sizes: [lat | 73] x [lon | 144]
>>> Coordinates:
>>> lat: [90..-90]
>>> lon: [ 0..357.5]
>>> Number Of Attributes: 15
>>> lat2d : <ARRAY of 73 elements>
>>> lon2d : <ARRAY of 144 elements>
>>> long_name : Monthly mean u wind
>>> actual_range : ( -66.37, 124.4 )
>>> valid_range : ( -125, 160 )
>>> units : m/s
>>> missing_value : 32766
>>> precision : 2
>>> least_significant_digit : 1
>>> var_desc : u-wind
>>> U
>>> dataset : CDC Derived NCEP Reanalysis Products
>>> AC
>>> level_desc : Multiple levels
>>> F
>>> statistic : Mean
>>> M
>>> parent_stat : Other
>>> -
>>> _FillValue : 32766
>>>
>>>
>>> Variable: vdiv
>>> Type: float
>>> Total Size: 42048 bytes
>>> 10512 values
>>> Number of Dimensions: 2
>>> Dimensions and sizes: [lat | 73] x [lon | 144]
>>> Coordinates:
>>> lat: [90..-90]
>>> lon: [ 0..357.5]
>>> Number Of Attributes: 15
>>> _FillValue : 32766
>>> parent_stat : Other
>>> -
>>> statistic : Mean
>>> M
>>> level_desc : Multiple levels
>>> F
>>> dataset : CDC Derived NCEP Reanalysis Products
>>> AC
>>> var_desc : v-wind
>>> V
>>> least_significant_digit : 1
>>> precision : 2
>>> missing_value : 32766
>>> units : m/s
>>> valid_range : ( -125, 160 )
>>> actual_range : ( -66.65, 66.39 )
>>> long_name : Monthly mean v wind
>>> lon2d : <ARRAY of 144 elements>
>>> lat2d : <ARRAY of 73 elements>
>>>
>>>
>>>
>>> Here is my script:
>>> ;***********************************************
>>> 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/csm/contributed.ncl"
>>> ;*************************************************
>>> begin
>>> ;*************************************************
>>> dir = "/home/cgf/projects/"
>>> f = addfile (dir+"uwnd200.nc", "r")
>>> u = f->uwnd ; (lat,lon)
>>> lat2d = f->lat
>>> lon2d = f->lon
>>> f2 = addfile (dir+"vwnd200.nc", "r")
>>> v = f2->vwnd
>>> printVarSummary(lat2d)
>>> printVarSummary(lon2d)
>>>
>>> u_at_lon2d=lon2d
>>> u_at_lat2d=lat2d
>>> v_at_lon2d=lon2d
>>> v_at_lat2d=lat2d
>>> udiv=u
>>> vdiv=v
>>> gradsf(u,udiv,vdiv)
>>> ;
>>> ; ************
>>> ; plotting
>>> ;
>>> ;
>>> wks = gsn_open_wks("ps","wind") ; open a workstation
>>> gsn_define_colormap(wks,"BlWhRe")
>>> ;************************************************
>>> ; resource list for first data array
>>> ;************************************************
>>> res1 = True
>>> res1_at_gsnDraw = False ; don"t draw
>>> res1_at_gsnFrame = False ; don"t advance frame
>>>
>>> res1_at_cnLevelSelectionMode = "ManualLevels" ; set manual contour levels
>>> res1_at_cnMinLevelValF = -5. ; set min contour level
>>> res1_at_cnMaxLevelValF = 45. ; set max contour level
>>> res1_at_cnLevelSpacingF = 2 ; set contour spacing
>>>
>>> res1_at_lbOrientation = "Vertical" ; vertical label bar
>>> res1_at_lbLabelAutoStride = True ; optimal label stride
>>> res1_at_gsnSpreadColors = True ; use full range of colors
>>> res1_at_gsnSpreadColorEnd = -3 ; don"t use added gray
>>>
>>> ; res1_at_mpCenterLonF = 180. ; center plot at 180
>>>
>>> res1_at_mpMinLonF = 0. ; select a subregion
>>> res1_at_mpMaxLonF = 360.
>>> res1_at_mpMinLatF = -90.
>>> res1_at_mpMaxLatF = 90.
>>>
>>> ;************************************************
>>> ; resource list for second data array
>>> ;************************************************
>>> res2 = True
>>> res2_at_cnLevelSelectionMode = "ManualLevels" ; set manual contour levels
>>> res2_at_cnMinLevelValF = -10. ; set min contour level
>>> res2_at_cnMaxLevelValF = 10. ; set max contour level
>>> res2_at_cnLevelSpacingF = 0.5 ; set contour spacing
>>> res2_at_cnLineLabelsOn = True
>>> res2_at_gsnContourZeroLineThicknessF = 2. ; doubles thickness of
>>> zero contour
>>> res2_at_gsnContourNegLineDashPattern = 1 ; sets negative contours
>>> to dash pattern 1
>>>
>>> printVarSummary(u)
>>> printVarSummary(vdiv)
>>>
>>> plot=gsn_csm_contour_map_overlay(wks,u,vdiv*1e5,res1,res2)
>>> draw(plot)
>>> frame(wks)
>>> end
>>>
>>>
>>>
>
>
> _______________________________________________
> ncl-talk mailing list
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk

-- 
--------------------------------------------------------------
Adam Phillips			             asphilli_at_ucar.edu
National Center for Atmospheric Research   tel: (303) 497-1726
ESSL/CGD/CAS                               fax: (303) 497-1333
P.O. Box 3000				
Boulder, CO 80307-3000	  http://www.cgd.ucar.edu/cas/asphilli
_______________________________________________
ncl-talk mailing list
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
Received on Fri Aug 14 2009 - 10:11:49 MDT

This archive was generated by hypermail 2.2.0 : Fri Aug 14 2009 - 13:47:46 MDT