Thank you very much Dennis. Am I correct that once I use rcm2points, I would have to follow that with qsort or something like that to make the variable monotonic?
Thanks,
Jim
________________________________________
From: Dennis Shea [shea@ucar.edu]
Sent: Monday, August 05, 2013 7:09 AM
To: Means, James
Cc: ncl-talk@ucar.edu
Subject: Re: Confused by coordinate variable
Hi Jim
Coordinate variables can be a bit confusing because
not all arrays that contain grid coordinates are coordinate
variables. :-) Coordinates variables are a special
structure.
Unidata definition
http://www.unidata.ucar.edu/software/netcdf/docs/BestPractices.html
"A coordinate variable is a one-dimensional variable with the same name
as a dimension, which names the coordinate values of the dimension. It
must not have any missing data (for example, no _FillValue or
missing_value attributes) and must be strictly monotonic (values
increasing or decreasing)."
===
Consider a variable with structure: x([time,][lev,],LAT,LON)
Generally, 'time' and 'lev' are one dimensional [*],
numeric and monotonic: hence, they are coordinate variables.
For the NAM-218 the 'lv_ISBL2' dimension is a coordinate variable.
For a *rectilinear* grid, the LAT and LON associated with a
variable are one dimensional [*], numeric and monotonic.
EG
double time(time) ;
time:long_name = "time" ;
time:calendar = "standard" ;
time:units = "days since 1979-01-01 00:00:00" ;
float lat(lat) ;
lat:long_name = "latitude" ;
lat:units = "degrees_north" ;
float lon(lon) ;
lon:long_name = "longitude" ;
float PREC(time, lat, lon) ;
PREC:missing_value = -99999.f ;
PREC:_FillValue = -99999.f ;
PREC:units = "mm/day" ;
PREC:long_name = "precipitation" ;
In the above the time, lat, lon variables are associated
with the *named dimensions* of the PREC variable. If you read
the variable PREC and then do a printVarSummary:
f = addfile("...","r")
p = f->PREC
printVarSummary(p)
Variable: p
[snip]
Number of Dimensions: 3
Dimensions and sizes: [time | 384] x [lat | 72] x [lon | 144]
--- Coordinates: time: [ 15..11672] lat: [-88.75..88.75] lon: [1.25..358.75] --- Number Of Attributes: 4 [snip The "Coordinates" lists all 'coordinate variables' associated with named dimensions of the parent variable: here, time, lat, lon. It also lists the min and max values. In NCL, the above is imported into a data structure: http://www.cgd.ucar.edu/~shea/NclVariableModel.png ie: an NCL variable is not just an array of numbers. Rather, it is a data structure. Elements of the data structure, can be accessed via NCL syntax (& for coordinate variables and @ for attributes). Further, coordinate variables can be used to easily subset a variable using the {...} syntax: p(:,{-20:60},{35:270}) A user could use p&lat ... meaning the 'lat' values associated with the variable 'p'... eg x = linint2_points(p&lon, p&lat, p, ...) ++++++++++++++++++ The NAM-218 is, in NCL-speak, a *curvilinear* grid. Here, each grid point requires 2-dimensional lat/lon arrays to describe the grid. gridlat_218 ( gridx_218, gridy_218 ) gridlon_218 ( gridx_218, gridy_218 ) WRF and NARR grids are other examples of curvilinear grids. There is no NCL syntax that would allow subsetting. You would have to use standard indexing (subscripts). As indicated by the printVarSummary() below, NCL does tell you the variables containing the coordinates that describe the grid associated with the variable: coordinates : gridlat_218 gridlon_218 +++++++++++++++++++ Finally, the answer to your question!! I think either of the following can be used: http://www.ncl.ucar.edu/Document/Functions/Built-in/rcm2points.shtml http://www.ncl.ucar.edu/Document/Functions/Contributed/rcm2points_Wrap.shtml These can be a bit slow. There is no simpl, general way to isolate the values in a region. Brute force looping is used 'under the hood'. HTH D On 8/4/13 11:47 PM, Means, James wrote: > Hello NCL-Talk, > > I'm perpetually confused by coordinate variables. I need to create a cross-section of relative humidity between two points using NAM-218 data. I am trying to borrow code from the transect example, http://www.ncl.ucar.edu/Applications/Scripts/trans_1.ncl, but it uses linint2_points, which I believe requires coordinate variables. When I run ncl_filedump on the NAM-218 grib file, I get information like: > > float R_H_218_ISBL ( lv_ISBL2, gridx_218, gridy_218 ) > center : US National Weather Service - NCEP (WMC) > long_name : Relative humidity > units : % > _FillValue : 1e+20 > coordinates : gridlat_218 gridlon_218 > level_indicator : 100 > grid_number : 218 > parameter_table_version : 2 > parameter_number : 52 > model : MESO ETA Model > forecast_time : 0 > forecast_time_units : hours > initial_time : 12/11/2008 (12:00) > > and for gridlat_218: > > float gridlat_218 ( gridx_218, gridy_218 ) > corners : ( 12.19, 14.35541, 57.34082, 54.56082 ) > long_name : latitude > grid_description : AWIPS grid over the Contiguous United States (us > ed by the 12-km ETA Model) (Lambert Conformal) > units : degrees_north > mpLambertMeridianF : 265 > mpLambertParallel2F : 25 > mpLambertParallel1F : 25 > mpProjection : LAMBERTCONFORMAL > Dy : 12190.58 > Dx : 12190.58 > Lov : 265 > Lo1 : 226.514 > La1 : 12.19 > > So my question is, what coordinate variables should I use in linint2_points and how do I create them? Sorry for the dumb question. > > Thanks, > > Jim > _______________________________________________ > 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-talkReceived on Mon Aug 5 08:26:40 2013
This archive was generated by hypermail 2.1.8 : Wed Aug 07 2013 - 13:59:00 MDT