Hello Mark

It looks a bit like your two examples are two different datasets.  

In Example 1 you have a Wind_SFC value for each pair of projection coordinates; 
the data is 2D whilst the projection coordinates are 1D.  To be CF compliant 
you must include latitude and longitude coordinates in your NetCDF file.

In Example two you have a Wind_SFC value for each pair of lat/lon coordinates; 
the data is 2D whilst the coordinates are 1D.  

These datasets cannot be the same for any Mercator I know of, you must have 
re-sampled your data onto a different horizontal grid.  If this is the case, 
this seems less preferable, I would preserve the data as much as possible in my 
files. I you have not re-sampled your data, then the data and coordinates will 
not match up correctly.

I think example two is explicitly wrong.  I would prefer example one to encode 
this data.

all the best
mark


-----Original Message-----
From: CF-metadata on behalf of Mark Mathewson Consulting
Sent: Thu 11/10/2012 19:05
To: [email protected]
Subject: [CF-metadata] CF-netcdf for Mercator projection - use lat/lon,or xc/yc 
plus lat/lon
 
I have data that I'm putting into CF netcdf format (conventions 1.6) 
that is in the Mercator projection.  I'm trying to determine which 
method is preferred for CF-compliance, in regard to the projection 
information.   The basic question is: Since the Mercator projection is 
N-S-E-W, is there any need to provide projection coordinates (xc, yc)?   
I can see the need to provide the projection coordinates for projections 
such as Polar Stereographic.

Example 1:  Use of x and y projection coordinates, with separate lat/lon 
variables.
netcdf \1 {
dimensions:
     xc = 287 ;
     yc = 232 ;
     time = 1 ;
variables:
     char Mercator ;
         Mercator:longitude_of_projection_origin = 135.f ;
         Mercator:long_name = "projection information" ;
         Mercator:standard_parallel = 0.f ;
         Mercator:false_northing = 0.f ;
         Mercator:grid_mapping_name = "mercator" ;
         Mercator:false_easting = 0.f ;
     float yc(yc) ;
         yc:units = "m" ;
         yc:standard_name = "projection_y_coordinate" ;
     float xc(xc) ;
         xc:units = "m" ;
         xc:standard_name = "projection_x_coordinate" ;
     int time(time) ;
         time:units = "hours since 1970-01-01T00:00:00Z" ;
         time:long_name = "starting time for grids" ;
         time:standard_name = "time" ;
         time:calendar = "gregorian" ;
     float longitude(yc, xc) ;
         longitude:units = "degrees_east" ;
         longitude:standard_name = "longitude" ;
     float latitude(yc, xc) ;
         latitude:units = "degrees_north" ;
         latitude:standard_name = "latitude" ;
     float Wind_SFC(time, yc, xc) ;
         Wind_Mag_SFC:_FillValue = -30000.f ;
         Wind_Mag_SFC:grid_mapping = "Mercator" ;
         Wind_Mag_SFC:coordinates = "latitude longitude" ;
         Wind_Mag_SFC:valid_range = 0.f, 64.30556f ;
         Wind_Mag_SFC:standard_name = "wind_speed" ;
         Wind_Mag_SFC:cell_methods = "time: mode" ;
         Wind_Mag_SFC:units = "m sec**-1" ;

Example 2:  Just using lat/lon coordinate variables, even though the 
projection is not latlon.
netcdf \1 {
dimensions:
     longitude = 287 ;
     latitude = 232 ;
     time = 1 ;
variables:
     char Mercator ;
         Mercator:longitude_of_projection_origin = 135.f ;
         Mercator:long_name = "projection information" ;
         Mercator:standard_parallel = 0.f ;
         Mercator:false_northing = 0.f ;
         Mercator:grid_mapping_name = "mercator" ;
         Mercator:false_easting = 0.f ;
     int time(time) ;
         time:units = "hours since 1970-01-01T00:00:00Z" ;
         time:long_name = "starting time for grids" ;
         time:standard_name = "time" ;
         time:calendar = "gregorian" ;
     float longitude(longitude) ;
         longitude:units = "degrees_east" ;
         longitude:standard_name = "longitude" ;
     float latitude(latitude) ;
         latitude:units = "degrees_north" ;
         latitude:standard_name = "latitude" ;
     float Wind_SFC(time, latitude, longitude) ;
         Wind_Mag_SFC:_FillValue = -30000.f ;
         Wind_Mag_SFC:grid_mapping = "Mercator" ;
         Wind_Mag_SFC:valid_range = 0.f, 64.30556f ;
         Wind_Mag_SFC:standard_name = "wind_speed" ;
         Wind_Mag_SFC:cell_methods = "time: mode" ;
         Wind_Mag_SFC:units = "m sec**-1" ;


Which example is preferred?   If example 2 is used, should the xy 
coordinates be provided as:
float xc(longitude) ;
float yc(latitude);
and use the coordinate attribute for Wind pointing to xc and yc?

Thanks.

Regards,
Mark

-- 
Mark Mathewson Consulting
535 Swanson Mill Rd.
Tonasket, WA 98855
509-429-8635

_______________________________________________
CF-metadata mailing list
[email protected]
http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata


_______________________________________________
CF-metadata mailing list
[email protected]
http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata

Reply via email to