
=======================================
Example 1: rotated_latitude_longitude
=======================================

	rlon = 106 ;
	rlat = 111 ;
	float lon(rlat, rlon) ;
		lon:long_name = "longitude" ;
		lon:units = "degrees_east" ;
		lon:standard_name = "grid_longitude" ;
	float lat(rlat, rlon) ;
		lat:long_name = "latitude" ;
		lat:units = "degrees_north" ;
		lat:standard_name = "grid_latitude" ;
        float rlat(rlat) ;
		rlat:standard_name = "grid_latitude" ;
		rlat:long_name = "rotated latitude" ;
		rlat:units = "degrees" ;
	float rlon(rlon) ;
		rlon:standard_name = "grid_longitude" ;
		rlon:long_name = "rotated longitude" ;
		rlon:units = "degrees" ;
	char rotated_pole ;
		rotated_pole:long_name = "coordinates of the rotated North Pole" ;
		rotated_pole:grid_mapping_name = "rotated_latitude_longitude" ;
		rotated_pole:grid_north_pole_latitude = 39.25f ;
		rotated_pole:grid_north_pole_longitude = -162.f ;
	float T_2M_AV(time, height_2m, rlat, rlon) ;
		T_2M_AV:standard_name = "air_temperature" ;
		T_2M_AV:units = "K" ;
		T_2M_AV:coordinates = "lon lat" ;

gridtype = GRIB_CURVILINEAR
xsize = 106
ysize = 111
xname = lon
xvals = ...
yname = lat
yvals = ...
xdimname = rlon
ydimname = rlat
projection = rotated_latitude_longitude
pname  = rotated_pole
pxvals = ....
pyvals = ....
grid_north_pole_latitude = 39.25f
grid_north_pole_longitude = -162.f
long_name = "coordinates of the rotated North Pole"

gridID = gridCreate(GRID_CURVILINEAR, size)
gridDefXsize(gridID, xsize)
gridDefYsize(gridID, ysize)
gridDefXvals(gridID, xvals)
gridDefYvals(gridID, yvals)
....
projID = gridCreate(GRIB_PROJECTION, size)
gridDefKeyStr(projID, CDI_KEY_MAPPINGNAME, len, string)
gridDefKeyStr(projID, CDI_KEY_PNAME, len, string)
gridDefXsize(projID, xsize)
gridDefYsize(projID, ysize)
gridDefXvals(projID, xvals)
gridDefYvals(projID, yvals)
gridDefAttStr(projID, NAME, len, string);
gridDefAttFlt(projID, NAME, len, array);
....
gridDefProjection(gridID, projID);

=======================================
Example 2: lambert_azimuthal_equal_area
=======================================

        x = 334 ;
	y = 334 ;

        double x(x) ;
		x:standard_name = "projection_x_coordinate" ;
		x:units = "m" ;
		x:axis = "X" ;
	double y(y) ;
		y:standard_name = "projection_y_coordinate" ;
		y:units = "m" ;
		y:axis = "Y" ;
	char laea ;
		laea:grid_mapping_name = "lambert_azimuthal_equal_area" ;
		laea:earth_radius = 6370997. ;
		laea:longitude_of_projection_origin = 0. ;
		laea:latitude_of_projection_origin = 90. ;
	float CFC_FC_F(time, y, x) ;
		CFC_FC_F:grid_mapping = "laea" ;

gridtype = GRIB_CURVILINEAR
xsize = 334
ysize = 334
projection = lambert_azimuthal_equal_area
pxvals = ....
pyvals = ....
earth_radius = 6370997.
longitude_of_projection_origin = 0.
latitude_of_projection_origin = 90.

cdo gen_geoloc ifile ofile
//cdo del_geoloc ifile ofile

gridtype = GRIB_CURVILINEAR
xsize = 334
ysize = 334
xvals = ....
yvals = ....
xbounds = ....
ybounds = ....
projection = lambert_azimuthal_equal_area
pxvals = ....
pyvals = ....
earth_radius = 6370997.
longitude_of_projection_origin = 0.
latitude_of_projection_origin = 90.

cdo del_proj ifile ofile

gridtype = GRIB_CURVILINEAR
xsize = 334
ysize = 334
xvals = ....
yvals = ....
xbounds = ....
ybounds = ....

=======================================
Example 3: Latitude and longitude on a spherical Earth
=======================================

dimensions:
  lat = 18 ;
  lon = 36 ;
variables:
  double lat(lat) ;
  double lon(lon) ;
  float temp(lat, lon) ;
    temp:long_name = "temperature" ;
    temp:units = "K" ;
    temp:grid_mapping = "crs" ;
  int crs ;
    crs:grid_mapping_name = "latitude_longitude"
    crs:semi_major_axis = 6371000.0 ;
    crs:inverse_flattening = 0 ;

LONLAT grid with projection parameter
GENERIC grid        "
CURVILINEAR grid      "
UNSTRUCTURED grid        "
