59 ss <<
"x: " <<
x <<
" y: " <<
y <<
" z: " <<
z
118 std::stringstream ss;
129 srid =
"EPSG:" + std::to_string(in_epsg);
152 std::map<std::string, std::string> dict;
169 std::map<std::string, std::string> dict;
180 dict[
"nodata"] = std::to_string(
nodata);
183 dict[
"timezone"] = std::to_string(
timezone);
215 std::vector<std::string>
units = {};
222 for (
size_t id = 0;
id <
fields.size();
id++) {
223 if (fieldname ==
fields[
id])
236 std::map<std::string, std::vector<std::string>>
toMap()
const {
237 std::map<std::string, std::vector<std::string>> dict;
240 if (!
units.empty()) {
241 dict[
"units"] =
units;
254 [](
double d) { return std::to_string(d); });
255 dict[
"units_multipliers"] = str_units_multipliers;
259 std::vector<std::string> str_units_offsets(
units_offsets.size());
261 [](
double d) { return std::to_string(d); });
262 dict[
"units_offsets"] = str_units_offsets;
286std::vector<double>
convertVector(
const std::vector<std::string> &vec);
287std::vector<Coords>
convertVector(
const std::vector<geoLocation> &vec,
const int& epsg);
331 std::vector<Date> dates_in_file;
332 std::vector<std::vector<double>> row_data;
333 std::vector<geoLocation> locations_in_data;
340 iCSVFile(
const std::string &infile,
const bool& read_sequential);
343 void readFile(
const std::string &infile,
const bool& sequentially,
const bool& is_gzipped =
false);
353 const std::vector<std::vector<double>>&
getRowData()
const {
return row_data; }
357 if (index >= locations_in_data.size()) {
358 throw std::out_of_range(
"Index out of range for locations");
360 return locations_in_data[index];
363 std::vector<Date> dates;
364 for (
const Date &date : dates_in_file) {
365 if (date >= start_date && date <= end_date) {
366 dates.push_back(date);
373 return std::vector<geoLocation>();
375 std::vector<geoLocation> locations;
376 for (
size_t i = 0; i < dates_in_file.size(); i++) {
377 if (dates_in_file[i] >= start_date && dates_in_file[i] <= end_date) {
378 locations.push_back(locations_in_data[i]);
384 bool processLine(
const std::string& line, std::string& section,
const bool& sequentially);
385 void parseLineContent(
const std::string& content,
const std::string& section);
393 std::vector<std::string>
columnsToAppend(
const std::vector<MeteoData> &vecMeteo)
const;
396 double readData(
const Date &r_date,
const std::string &fieldname);
397 void aggregateData(
const std::vector<MeteoData> &vecMeteo,
const bool& optimize_precision =
false);
398 void parseMetaData(
const std::string &key,
const std::string &value);
399 void parseFields(
const std::string &key,
const std::string &value);
A class to handle geographic coordinate systems. This class offers an easy way to transparently conve...
Definition Coords.h:83
void setPoint(const double in_x_or_lat, const double in_y_or_lon, const double in_altitude)
Set coordinates based on the previously defined EPSG code If the EPSG code is 4326 (which represents ...
Definition Coords.cc:592
A class to handle timestamps. This class handles conversion between different time display formats (I...
Definition Date.h:86
This class is responsible for handling and storing iCSV files.
Definition iCSVHelper.h:310
std::vector< std::string > columnsToAppend(const std::vector< MeteoData > &vecMeteo) const
Definition iCSVHelper.cc:592
const std::vector< Date > & getAllDatesInFile() const
Definition iCSVHelper.h:354
void parseMetaData(const std::string &key, const std::string &value)
Definition iCSVHelper.cc:374
bool timezone_in_data
Definition iCSVHelper.h:323
std::string firstline
Definition iCSVHelper.h:315
geoLocation station_location
Definition iCSVHelper.h:316
std::vector< geoLocation > getLocationsInData(const Date &start_date, const Date &end_date) const
Definition iCSVHelper.h:371
double getNoData() const
Definition iCSVHelper.h:349
size_t time_id
Definition iCSVHelper.h:326
iCSVFile()
Definition iCSVHelper.cc:206
double getTimeZone() const
Definition iCSVHelper.h:352
fieldsSection FIELDS
Definition iCSVHelper.h:319
size_t skip_lines_to_data
Definition iCSVHelper.h:313
void parseFields(const std::string &key, const std::string &value)
Definition iCSVHelper.cc:403
bool checkFormatValidity()
Checks the validity of the format for the iCSVFile.
Definition iCSVHelper.cc:502
bool isValidLocation(const geoLocation &location)
Definition iCSVHelper.cc:579
void findTime()
Definition iCSVHelper.cc:656
bool location_in_header
Definition iCSVHelper.h:322
bool timestamp_present
Definition iCSVHelper.h:324
void findLocation()
Definition iCSVHelper.cc:674
bool isColumnName(const std::string &geometry)
Definition iCSVHelper.cc:581
std::vector< Date > getDatesInFile(const Date &start_date, const Date &end_date) const
Definition iCSVHelper.h:362
bool checkMeteoIOCompatibility() const
Definition iCSVHelper.cc:566
void readFile(const std::string &infile, const bool &sequentially, const bool &is_gzipped=false)
Definition iCSVHelper.cc:253
std::string filename
Definition iCSVHelper.h:314
geoLocation getLocationAt(size_t index) const
Definition iCSVHelper.h:356
void aggregateData(const std::vector< MeteoData > &vecMeteo, const bool &optimize_precision=false)
Definition iCSVHelper.cc:454
const std::vector< geoLocation > & getAllLocationsInData() const
Definition iCSVHelper.h:355
size_t location_id
Definition iCSVHelper.h:327
void processData(const std::string &content)
Definition iCSVHelper.cc:352
void parseGeometry()
Parses the geometry information of the iCSV file.
Definition iCSVHelper.cc:627
MetaDataSection METADATA
Definition iCSVHelper.h:318
void parseLineContent(const std::string &content, const std::string §ion)
Definition iCSVHelper.cc:330
const std::vector< std::vector< double > > & getRowData() const
Definition iCSVHelper.h:353
bool processLine(const std::string &line, std::string §ion, const bool &sequentially)
Definition iCSVHelper.cc:293
double readData(const Date &r_date, const std::string &fieldname)
Definition iCSVHelper.cc:431
bool julian_present
Definition iCSVHelper.h:325
static const double default_nodata
Definition iCSVHelper.h:31
constexpr double nodata
This is the internal nodata value.
Definition IOUtils.h:76
const size_t npos
npos is the out-of-range value
Definition IOUtils.h:82
std::vector< double > convertVector(const std::vector< std::string > &vec)
Definition iCSVHelper.cc:140
bool roughlyEqual(const MetaDataSection &lhs, const MetaDataSection &rhs)
Checks if two MetaDataSection objects are roughly equal.
Definition iCSVHelper.cc:744
MetaDataSection & operator+=(MetaDataSection &lhs, const MetaDataSection &rhs)
Definition iCSVHelper.cc:784
bool operator!=(const geoLocation &lhs, const geoLocation &rhs)
Definition iCSVHelper.cc:687
bool operator==(const geoLocation &lhs, const geoLocation &rhs)
Definition iCSVHelper.cc:686
geoLocation toiCSVLocation(Coords loc, const int &epsg)
Definition iCSVHelper.cc:171
geoLocation extractCoordinates(const std::string &geometry)
Extracts a geoLocation object from a WKT geometry string.
Definition iCSVHelper.cc:188
Stores Information on the FIELDS section of a iCSV file.
Definition iCSVHelper.h:211
size_t getFieldIndex(const std::string &fieldname) const
Definition iCSVHelper.h:221
std::vector< double > units_offsets
Definition iCSVHelper.h:214
std::map< std::string, std::vector< std::string > > other_fields
Definition iCSVHelper.h:219
std::vector< std::string > units
Definition iCSVHelper.h:215
std::vector< double > units_multipliers
Definition iCSVHelper.h:213
std::vector< std::string > long_name
Definition iCSVHelper.h:216
std::vector< std::string > fields
Definition iCSVHelper.h:212
std::map< std::string, std::vector< std::string > > toMap() const
Definition iCSVHelper.h:236
std::vector< std::string > standard_name
Definition iCSVHelper.h:217
std::vector< std::string > getOtherFields(const std::string &key)
Definition iCSVHelper.h:229
Represents a geographic location extracted from iCSV files. (POINT(X Y)...)
Definition iCSVHelper.h:40
bool isEmpty() const
Checks if the geoLocation is empty.
Definition iCSVHelper.h:51
geoLocation & operator=(const geoLocation &rhs)
Definition iCSVHelper.cc:689
void standardizeNodata()
Definition iCSVHelper.h:65
double x
Definition iCSVHelper.h:41
std::string toString() const
Converts the geoLocation to a string representation.
Definition iCSVHelper.h:57
Coords toCoords(const int &epsg) const
Definition iCSVHelper.h:83
double slope_angle
Definition iCSVHelper.h:44
double slope_azi
Definition iCSVHelper.h:45
double z
Definition iCSVHelper.h:43
double y
Definition iCSVHelper.h:42