[ncl-talk] about "check_for_y_lat_coord and valid latitude coordinate array"

Mary Haley haley at ucar.edu
Mon Oct 26 09:46:22 MDT 2015


Liang,

The error is telling you that NCL can't find any lat/lon information
associated with your data, so it doesn't know where to put your data on the
map.

Thanks for providing a dump of your NetCDF file.  It shows that you have
two-dimensional lat/lon coordinates:

      float longitude ( y, x )
         standard_name :        longitude
         long_name :    longitude
         units :        degrees_east
         _CoordinateAxisType :  Lon

      float latitude ( y, x )
         standard_name :        latitude
         long_name :    latitude
         units :        degrees_north
         _CoordinateAxisType :  Lat

In order to correctly plot these, you need to attach them as "lat2d" and
"lon2d" attributes to your data variable:

Instead of this:

temp = f->air_temperature (0,:,:)
lon  = f->longitude (:,:)
lat  = f->latitude (:,:)
timebnds = f->time_bnds

Do this:

temp        = f->air_temperature (0,:,:)
temp at lon2d  = f->longitude           ; Note, the "(:,:)" is not needed
temp at lat2d  = f->latitude
timebnds    = f->time_bnds


​If your data is not global, then you may also need this:

  res at gsnAddCyclic = False    ; don't add a longitude cyclic point

​
I did notice that you have these two lines commented out:

;res at sfXArray         = lon
;res at sfYArray         = lat

This is a second way that you can provide the lat/lon information to the
plotting routine. I usually prefer the "lat2d/lon2d" attribute method,
because gsnAddCyclic only works with this method.

I will try to come up with a "generic" page on contouring, to better
explain these various methods.

--Mary



On Mon, Oct 26, 2015 at 8:26 AM, wh.lakes.2015 <wh.lakes.2015 at gmail.com>
wrote:

>
>
> ------------------------------
> *发件人:*Si ZH <wh.lakes.2015 at gmail.com>
> *发送时间:*2015-10-25 16:36
> *主题:*about "check_for_y_lat_coord and valid latitude coordinate array"
> *收件人:*"ncl-talk"<ncl-talk at ucar.edu>
> *抄送:*
>
> Hi there,
>
> I am a new learner of UCL and was blocked at the gate of .nc file "read
> in" step. I use "ncl_filedump" and can see the dimensions and variables in
> my .nc file, but I don't know how to read those dimensions and variables
> correctly in NCL,
>
> NCL version I am using is 6.3.0, the contents of "myfile.nc" like below:
>
> $ ncl_filedump myfile.nc
>  Copyright (C) 1995-2015 - All Rights Reserved
>  University Corporation for Atmospheric Research
>  NCAR Command Language Version 6.3.0
>  The use of this software is governed by a License Agreement.
>  See http://www.ncl.ucar.edu/ for more details.
>
> Variable: f
> Type: file
> filename:       myfile
> path:   myfile.nc
>    file global attributes:
>       CDI : Climate Data Interface version 1.6.1 (
> http://code.zmaw.de/projects/cdi)
>       Conventions : CF-1.5
>       history : Thu Jan 22 19:25:20 2015: cdo sub
> SM_MAM.zhyaa.pm.03236.206912-209911.nc SM_MAM.zhyaa.03236.198012-201011.nc
> zhyaa.MAM.mean.diff.2080.03236.nc
> Thu Jan 15 16:48:56 2015: cdo -timmean -selmon,3,4,5
> zhyaa.03236.monthly.198012-201011.nc SM_MAM.zhyaa.03236.198012-201011.nc
> Converted from PP by cf-python v0.9.8.3
>       source : UM
>       runid : zhyaa
>       stash_code : 3236
>       lbproc : 0
>       submodel : 1
>       CDO : Climate Data Operators version 1.6.1 (
> http://code.zmaw.de/projects/cdo)
>    dimensions:
>       x = 134
>       y = 102
>       time = 1  // unlimited
>       nb2 = 2
>    variables:
>       float longitude ( y, x )
>          standard_name :        longitude
>          long_name :    longitude
>          units :        degrees_east
>          _CoordinateAxisType :  Lon
>
>       float latitude ( y, x )
>          standard_name :        latitude
>          long_name :    latitude
>          units :        degrees_north
>          _CoordinateAxisType :  Lat
>
>       double time ( time )
>          standard_name :        time
>          bounds :       time_bnds
>          units :        days since 1950-12-01 00:00:00
>          calendar :     360_day
>
>       double time_bnds ( time, nb2 )
>          units :        days since 1950-12-01 00:00:00
>          calendar :     360_day
>
>       float air_temperature ( time, y, x )
>          standard_name :        air_temperature
>          long_name :    TEMPERATURE AT 1.5M
>          units :        K
>          coordinates :  longitude latitude
>          _FillValue :   -1.073742e+09
>          missing_value :        -1.073742e+09
>          cell_methods : time: mean
>
>
> My NCL scripts I wrote like below:
>
>
> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
>
> begin
>
> ;;;read in temp data
> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
>
> f = addfile("myfile.nc","r")
>
> temp = f->air_temperature (0,:,:)
> lon  = f->longitude (:,:)
> lat  = f->latitude (:,:)
> timebnds = f->time_bnds
>
> ;temp!0 = "time"
> ;temp!1 = "y"
> ;temp!2 = "x"
>
>
>  ; temp&y at units = "degrees_north"
>   ;temp&x at units = "degrees_east"
>
> ;temp = temp - 273.15
> lon = lon-180
>
> temp at units = "(C)"
>
> wks = gsn_open_wks("x11", "myfile")
>
> wks at wkWidth = 6400
> wks at wkHeight = 4000
>
> res = True                      ;Indicate you want to set some resources.
> res at cnFillOn = True         ; Turn on contour line fill.
> ;res at cnLinesOn = False       ; no contour lines.
> res at cnLevelSpacingF = 0.5        ; contour spacing.
> res at gsnSpreadColors = True            ; full colors
> res at cnLineLabelsOn      = False   ; turn off line label.
>
> res at cnMonoFillColor       = False    ; Use multiple colors.
>
>
> ;res at mpMinLatF = 40
> ;res at mpMaxLatF = 50
> ;res at mpMinLonF = -92.5
> ;res at mpMaxLonF = -75.5
>
>
> res at pmLabelBarDisplayMode = "Always"
>
> res at pmLabelBarOrthogonalPosF =  0.08
>
> ;res at tiXAxisString    = lon at long_name
> ;res at tiYAxisString    = lat at long_name
>
> ;res at sfXArray         = lon
> ;res at sfYArray         = lat
>
>
> ;res at lbAutoLabelStride = True
>
> plot = gsn_csm_contour_map (wks,temp,res)
>
>
> end
>
>
> and NCL error message like below:
>
>
> (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'
>
>
> The data in "myfile.nc" are North American Great Lakes area temperature
> contour data (the large boundary is middle and East of US and Canada, and I
> have narrowed the map latitude and longitude to Great Lakes area, but the
> results looks nothing about my data, it looks like all over the world or
> East Asian area, it is why I used lon = lon - 180). My object is to figure
> out Great lakes Area temperature contour.
>
> I think my error is like NCL message said (I didn't read in correct
> dimensions and coordinates), but I can't 100% understand "myfile.nc" via
> NCL mini manuals, and don't know how to write tha correct scripts that can
> read in "myfile.nc" (with dimensions: y, x, time and time_bnd)
>
> I attach "myfile.nc" inside the attachment, hope you can help this,
>
> Thank you,
>
> Liang Zhang
>
>
>
>
>
> _______________________________________________
> ncl-talk mailing list
> ncl-talk at ucar.edu
> 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/20151026/7d9b7d3d/attachment.html 


More information about the ncl-talk mailing list