134 ACDD(
const bool& set_enable);
150 void addAttribute(
const std::string& att_name,
const std::string& att_value,
const Mode& mode=
MERGE);
168 void setGeometry(
const std::vector< std::vector<mio::MeteoData> >& vecMeteo,
const bool& isLatLon);
170 void setGeometry(
const std::set< mio::Coords >& vecLocation,
const bool& isLatLon);
172 void setTimeCoverage(
const std::vector< std::vector<mio::MeteoData> >& vecMeteo);
174 void setTimeCoverage(
const std::vector<std::string>& vec_timestamp,
const double& TZ);
187 void writeNcML(
const std::string& data_filename)
const;
188 void addDimension(
const std::string& var_name,
const std::string& var_long_name,
const size_t& length);
189 void addVariable(
const std::string& var_name,
const std::string& var_long_name,
const std::string& var_units);
194 static std::map<std::string, acdd_attrs> initAttributes();
195 static std::set< std::pair< std::string, std::set<std::string> > > initLinks();
196 static size_t countCommas(
const std::string& str);
197 void checkLinkedAttributes();
199 static bool isWigosID(
const std::string& str);
200 std::map<std::string, acdd_attrs> attributes;
201 std::set< std::pair< std::string, std::set<std::string> > > linked_attributes;
202 std::set< vars_attr > dimensions, variables;
232 ACDD_ATTR() : name(), value(), cfg_key(), default_value(), Default(true) {}
234 ACDD_ATTR(
const std::string& i_name,
const std::string& i_cfg_key,
const std::string& i_default_value=
"") : name(i_name), value(), cfg_key(i_cfg_key), default_value(i_default_value), Default(i_name.empty()) {}
236 ACDD_ATTR(
const std::string& i_name,
const std::string& i_value,
const std::string& i_cfg_key,
const std::string& i_default_value) : name(i_name), value(i_value), cfg_key(i_cfg_key), default_value(i_default_value), Default(false) {}
245 static void readFromFile(std::string& value,
const mio::Config& cfg,
const std::string& cfg_key,
const std::string& section,
const bool& allow_multi_line);
247 std::string name, value, cfg_key, default_value;
This class contains and handles NetCDF Attribute Conventions Dataset Discovery attributes (see ACDD).
Definition libacdd.h:122
void deleteAttribute(const std::string &att_name)
Delete an attribute (this is required in some rare cases if an attribute is handled separately,...
Definition libacdd.h:157
void addDimension(const std::string &var_name, const std::string &var_long_name, const size_t &length)
Definition libacdd.cc:330
void setEnableNcML(const bool &i_enable)
Should an NcML file be written alongside the data file?
Definition libacdd.cc:319
void setUserConfig(const mio::Config &cfg, const std::string §ion, const bool &allow_multi_line=true)
Read all config keys from the selected section and apply some special processing for some keys.
Definition libacdd.cc:247
std::string toString() const
Definition libacdd.cc:390
void writeNcML(const std::string &data_filename) const
Definition libacdd.cc:340
void setTimeCoverage(const std::vector< std::vector< mio::MeteoData > > &vecMeteo)
Definition libacdd.cc:657
void addVariable(const std::string &var_name, const std::string &var_long_name, const std::string &var_units)
Definition libacdd.cc:335
std::map< std::string, acdd_attrs >::const_iterator const_iterator
Definition libacdd.h:137
void setEnabled(const bool &i_enable)
Set an internal boolean as a helper for the caller to know if ACDD support should be enabled or not....
Definition libacdd.cc:267
Mode
Definition libacdd.h:124
@ APPEND
Definition libacdd.h:124
@ REPLACE
Definition libacdd.h:124
@ MERGE
Definition libacdd.h:124
const_iterator cend() const noexcept
Definition libacdd.h:139
void addAttribute(const std::string &att_name, const std::string &att_value, const Mode &mode=MERGE)
Add an attribute and its content to the internal list.
Definition libacdd.cc:411
std::string getAttribute(std::string &att_name) const
Given an attribute name, return its associated value (or an empty string if it does not exists)
Definition libacdd.cc:439
const_iterator cbegin() const noexcept
Definition libacdd.h:138
bool isEnabled() const
Get an internal boolean as a helper for the caller to know if ACDD support should be enabled or not.
Definition libacdd.h:163
void setGeometry(const mio::Grid2DObject &grid, const bool &isLatLon)
Definition libacdd.cc:449
bool enableNcML() const
Definition libacdd.h:186
A class that reads a key/value file. These files (typically named *.ini) follow the INI file format s...
Definition Config.h:79
A class to handle geographic coordinate systems. This class offers an easy way to transparently conve...
Definition Coords.h:83
A class to represent 2D Grids. Typical application as DEM or Landuse Model.
Definition Grid2DObject.h:42
This structure provides low level functions to handle and store individual ACDD fields.
Definition libacdd.h:231
bool isDefault() const
Definition libacdd.h:242
void setUserConfig(const mio::Config &cfg, const std::string §ion, const bool &allow_multi_line)
Set the value of the attribute, either from a config file key, or from an environment variable of the...
Definition libacdd.cc:194
ACDD_ATTR(const std::string &i_name, const std::string &i_cfg_key, const std::string &i_default_value="")
Definition libacdd.h:234
void setValue(const std::string &i_value, const Mode &mode=MERGE)
Set an ACDD value.
Definition libacdd.cc:226
ACDD_ATTR(const std::string &i_name, const std::string &i_value, const std::string &i_cfg_key, const std::string &i_default_value)
Definition libacdd.h:236
std::string getName() const
Definition libacdd.h:239
std::string getValue() const
Definition libacdd.h:238
ACDD_ATTR()
Definition libacdd.h:232
std::string name
Definition libacdd.h:218
VARS_ATTR(const std::string &i_name, const std::string &i_standard_name, const std::string &i_units)
Definition libacdd.h:208
size_t length
Definition libacdd.h:219
std::string units
Definition libacdd.h:218
bool operator<(const ACDD::VARS_ATTR &other) const
Definition libacdd.h:212
VARS_ATTR(const std::string &i_name, const std::string &i_standard_name, const size_t &i_length)
Definition libacdd.h:209
std::string standard_name
Definition libacdd.h:218