Ignore:
Timestamp:
06/10/15 16:39:54 (9 years ago)
Author:
rlacroix
Message:

Improve CF compliance: Various cosmetic changes.

  • Remove the axis attribute from the latitute and longitude coordinate variables when using curvilinear or unstructured grids.
  • Add the axis="Z" attribute only when the positive attribute is set for an axis.
  • Rename the conventions attribute to Conventions.
  • Add a global title attribute with the same content as the global description attribute. The old attribute might be removed in the future.
  • Remove the title attribute from the time coordinates.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/output/nc4_data_output.cpp

    r612 r613  
    8383         StdString dimXid, dimYid ; 
    8484 
     85         bool isRegularDomain = (domain->type == CDomain::type_attr::regular); 
    8586         switch (domain->type) 
    8687         { 
     
    189190                 } 
    190191 
    191                  this->writeAxisAttributes(lonid, "X", "longitude", "Longitude", "degrees_east", domid); 
    192                  this->writeAxisAttributes(latid, "Y", "latitude", "Latitude", "degrees_north", domid); 
     192                 this->writeAxisAttributes(lonid, isRegularDomain ? "X" : "", "longitude", "Longitude", "degrees_east", domid); 
     193                 this->writeAxisAttributes(latid, isRegularDomain ? "Y" : "", "latitude", "Latitude", "degrees_north", domid); 
    193194 
    194195                 dim0.clear(); 
     
    275276 
    276277                 this->writeAxisAttributes 
    277                     (lonid, "X", "longitude", "Longitude", "degrees_east", domid); 
     278                    (lonid, isRegularDomain ? "X" : "", "longitude", "Longitude", "degrees_east", domid); 
    278279                 this->writeAxisAttributes 
    279                     (latid, "Y", "latitude", "Latitude", "degrees_north", domid); 
     280                    (latid, isRegularDomain ? "Y" : "", "latitude", "Latitude", "degrees_north", domid); 
    280281 
    281282                 SuperClassWriter::definition_end(); 
     
    412413 
    413414 
    414                  this->writeAxisAttributes(lonid, "X", "longitude", "Longitude", "degrees_east", domid); 
     415                 this->writeAxisAttributes(lonid, "", "longitude", "Longitude", "degrees_east", domid); 
    415416                 if (domain->hasBounds) SuperClassWriter::addAttribute("bounds",bounds_lonid, &lonid); 
    416                  this->writeAxisAttributes(latid, "Y", "latitude", "Latitude", "degrees_north", domid); 
     417                 this->writeAxisAttributes(latid, "", "latitude", "Latitude", "degrees_north", domid); 
    417418                 if (domain->hasBounds) SuperClassWriter::addAttribute("bounds",bounds_latid, &latid); 
    418419                 if (domain->hasBounds) SuperClassWriter::addDimension(dimVertId, domain->nvertex); 
     
    463464                 SuperClassWriter::addVariable(latid, NC_FLOAT, dim0); 
    464465                 SuperClassWriter::addVariable(lonid, NC_FLOAT, dim0); 
    465                  this->writeAxisAttributes(lonid, "X", "longitude", "Longitude", "degrees_east", domid); 
     466                 this->writeAxisAttributes(lonid, "", "longitude", "Longitude", "degrees_east", domid); 
    466467                 if (domain->hasBounds) SuperClassWriter::addAttribute("bounds",bounds_lonid, &lonid); 
    467                  this->writeAxisAttributes(latid, "Y", "latitude", "Latitude", "degrees_north", domid); 
     468                 this->writeAxisAttributes(latid, "", "latitude", "Latitude", "degrees_north", domid); 
    468469                 if (domain->hasBounds) SuperClassWriter::addAttribute("bounds",bounds_latid, &latid); 
    469470                 if (domain->hasBounds) SuperClassWriter::addDimension(dimVertId, domain->nvertex); 
     
    566567              SuperClassWriter::addVariable(axisid, NC_FLOAT, dims); 
    567568 
    568               SuperClassWriter::addAttribute("axis", StdString("Z"), &axisid); 
    569  
    570569              if (!axis->name.isEmpty()) 
    571570                SuperClassWriter::addAttribute("name", axis->name.getValue(), &axisid); 
     
    581580 
    582581              if (!axis->positive.isEmpty()) 
    583                 if (axis->positive == CAxis::positive_attr::up) SuperClassWriter::addAttribute("positive", string("up"), &axisid); 
    584                 else SuperClassWriter::addAttribute("positive", string("down"), &axisid); 
     582              { 
     583                SuperClassWriter::addAttribute("axis", string("Z"), &axisid); 
     584                SuperClassWriter::addAttribute("positive", 
     585                                               (axis->positive == CAxis::positive_attr::up) ? string("up") : string("down"), 
     586                                               &axisid); 
     587              } 
    585588 
    586589              StdString axisBoundsId = axisid + "_bounds"; 
     
    16511654                                                   const StdString & time_bounds, 
    16521655                                                   const StdString & standard_name, 
    1653                                                    const StdString & long_name, 
    1654                                                    const StdString & title) 
     1656                                                   const StdString & long_name) 
    16551657      { 
    16561658         try 
     
    16581660           SuperClassWriter::addAttribute("standard_name", standard_name, &axis_name); 
    16591661           SuperClassWriter::addAttribute("long_name",     long_name    , &axis_name); 
    1660            SuperClassWriter::addAttribute("title",         title        , &axis_name); 
    16611662           SuperClassWriter::addAttribute("calendar",      calendar     , &axis_name); 
    16621663           SuperClassWriter::addAttribute("units",         units        , &axis_name); 
     
    16721673           msg.append(e.what()); 
    16731674           ERROR("CNc4DataOutput::writeTimeAxisAttributes(const StdString & axis_name, \ 
    1674                                                    const StdString & calendar,\ 
    1675                                                    const StdString & units, \ 
    1676                                                    const StdString & time_origin, \ 
    1677                                                    const StdString & time_bounds, \ 
    1678                                                    const StdString & standard_name, \ 
    1679                                                    const StdString & long_name, \ 
    1680                                                    const StdString & title)", << msg); 
     1675                                                          const StdString & calendar,\ 
     1676                                                          const StdString & units, \ 
     1677                                                          const StdString & time_origin, \ 
     1678                                                          const StdString & time_bounds, \ 
     1679                                                          const StdString & standard_name, \ 
     1680                                                          const StdString & long_name)", << msg); 
    16811681         } 
    16821682      } 
     
    16931693         try 
    16941694         { 
    1695           SuperClassWriter::addAttribute("axis"         , axis         , &axis_name); 
     1695          if (!axis.empty()) 
     1696            SuperClassWriter::addAttribute("axis"       , axis         , &axis_name); 
     1697 
    16961698          SuperClassWriter::addAttribute("standard_name", standard_name, &axis_name); 
    16971699          SuperClassWriter::addAttribute("long_name"    , long_name    , &axis_name); 
     
    17071709           msg.append(e.what()); 
    17081710           ERROR("CNc4DataOutput::writeAxisAttributes(const StdString & axis_name, \ 
    1709                                                const StdString & axis, \ 
    1710                                                const StdString & standard_name, \ 
    1711                                                const StdString & long_name, \ 
    1712                                                const StdString & units, \ 
    1713                                                const StdString & nav_model)", << msg); 
     1711                                                      const StdString & axis, \ 
     1712                                                      const StdString & standard_name, \ 
     1713                                                      const StdString & long_name, \ 
     1714                                                      const StdString & units, \ 
     1715                                                      const StdString & nav_model)", << msg); 
    17141716         } 
    17151717      } 
     
    17931795           SuperClassWriter::addAttribute("name"       , name); 
    17941796           SuperClassWriter::addAttribute("description", description); 
    1795            SuperClassWriter::addAttribute("conventions", conventions); 
     1797           SuperClassWriter::addAttribute("title"      , description); 
     1798           SuperClassWriter::addAttribute("Conventions", conventions); 
    17961799           SuperClassWriter::addAttribute("production" , production); 
    17971800           SuperClassWriter::addAttribute("timeStamp"  , timeStamp); 
Note: See TracChangeset for help on using the changeset viewer.