Changeset 613 for XIOS/branchs


Ignore:
Timestamp:
06/10/15 16:39:54 (6 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.
Location:
XIOS/branchs/xios-1.0/src/output
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • XIOS/branchs/xios-1.0/src/output/nc4_data_output.cpp

    r612 r613  
    8282         StdString dimXid, dimYid ; 
    8383 
     84         bool isRegularDomain = (domain->type == CDomain::type_attr::regular); 
    8485         switch (domain->type) 
    8586         { 
     
    188189                 } 
    189190 
    190                  this->writeAxisAttributes(lonid, "X", "longitude", "Longitude", "degrees_east", domid); 
    191                  this->writeAxisAttributes(latid, "Y", "latitude", "Latitude", "degrees_north", domid); 
     191                 this->writeAxisAttributes(lonid, isRegularDomain ? "X" : "", "longitude", "Longitude", "degrees_east", domid); 
     192                 this->writeAxisAttributes(latid, isRegularDomain ? "Y" : "", "latitude", "Latitude", "degrees_north", domid); 
    192193 
    193194                 dim0.clear(); 
     
    274275 
    275276                 this->writeAxisAttributes 
    276                     (lonid, "X", "longitude", "Longitude", "degrees_east", domid); 
     277                    (lonid, isRegularDomain ? "X" : "", "longitude", "Longitude", "degrees_east", domid); 
    277278                 this->writeAxisAttributes 
    278                     (latid, "Y", "latitude", "Latitude", "degrees_north", domid); 
     279                    (latid, isRegularDomain ? "Y" : "", "latitude", "Latitude", "degrees_north", domid); 
    279280 
    280281                 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->standard_name.isEmpty()) 
    571570                    SuperClassWriter::addAttribute 
     
    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"; 
     
    12901293                                                   const StdString & time_bounds, 
    12911294                                                   const StdString & standard_name, 
    1292                                                    const StdString & long_name, 
    1293                                                    const StdString & title) 
     1295                                                   const StdString & long_name) 
    12941296      { 
    12951297         try 
     
    12971299           SuperClassWriter::addAttribute("standard_name", standard_name, &axis_name); 
    12981300           SuperClassWriter::addAttribute("long_name",     long_name    , &axis_name); 
    1299            SuperClassWriter::addAttribute("title",         title        , &axis_name); 
    13001301           SuperClassWriter::addAttribute("calendar",      calendar     , &axis_name); 
    13011302           SuperClassWriter::addAttribute("units",         units        , &axis_name); 
     
    13111312           msg.append(e.what()); 
    13121313           ERROR("CNc4DataOutput::writeTimeAxisAttributes(const StdString & axis_name, \ 
    1313                                                    const StdString & calendar,\ 
    1314                                                    const StdString & units, \ 
    1315                                                    const StdString & time_origin, \ 
    1316                                                    const StdString & time_bounds, \ 
    1317                                                    const StdString & standard_name, \ 
    1318                                                    const StdString & long_name, \ 
    1319                                                    const StdString & title)", << msg); 
     1314                                                          const StdString & calendar,\ 
     1315                                                          const StdString & units, \ 
     1316                                                          const StdString & time_origin, \ 
     1317                                                          const StdString & time_bounds, \ 
     1318                                                          const StdString & standard_name, \ 
     1319                                                          const StdString & long_name)", << msg); 
    13201320         } 
    13211321      } 
     
    13321332         try 
    13331333         { 
    1334           SuperClassWriter::addAttribute("axis"         , axis         , &axis_name); 
     1334          if (!axis.empty()) 
     1335            SuperClassWriter::addAttribute("axis"       , axis         , &axis_name); 
     1336 
    13351337          SuperClassWriter::addAttribute("standard_name", standard_name, &axis_name); 
    13361338          SuperClassWriter::addAttribute("long_name"    , long_name    , &axis_name); 
     
    13461348           msg.append(e.what()); 
    13471349           ERROR("CNc4DataOutput::writeAxisAttributes(const StdString & axis_name, \ 
    1348                                                const StdString & axis, \ 
    1349                                                const StdString & standard_name, \ 
    1350                                                const StdString & long_name, \ 
    1351                                                const StdString & units, \ 
    1352                                                const StdString & nav_model)", << msg); 
     1350                                                      const StdString & axis, \ 
     1351                                                      const StdString & standard_name, \ 
     1352                                                      const StdString & long_name, \ 
     1353                                                      const StdString & units, \ 
     1354                                                      const StdString & nav_model)", << msg); 
    13531355         } 
    13541356      } 
     
    14321434           SuperClassWriter::addAttribute("name"       , name); 
    14331435           SuperClassWriter::addAttribute("description", description); 
    1434            SuperClassWriter::addAttribute("conventions", conventions); 
     1436           SuperClassWriter::addAttribute("title"      , description); 
     1437           SuperClassWriter::addAttribute("Conventions", conventions); 
    14351438           SuperClassWriter::addAttribute("production" , production); 
    14361439           SuperClassWriter::addAttribute("timeStamp"  , timeStamp); 
  • XIOS/branchs/xios-1.0/src/output/nc4_data_output.hpp

    r501 r613  
    6363                                         const StdString & time_bounds   = StdString("bounds"), 
    6464                                         const StdString & standard_name = StdString("time"), 
    65                                          const StdString & long_name     = StdString("Time axis"), 
    66                                          const StdString & title         = StdString("Time")); 
     65                                         const StdString & long_name     = StdString("Time axis")); 
    6766 
    6867            void writeFileAttributes(const StdString & name, 
Note: See TracChangeset for help on using the changeset viewer.