Elaboradar  0.1
 Tutto Classi Namespace File Funzioni Variabili Tipi enumerati (enum) Gruppi
assets.h
Vai alla documentazione di questo file.
1 
6 #ifndef ARCHIVIATORE_ASSETS_H
7 #define ARCHIVIATORE_ASSETS_H
8 
9 #include <string>
10 #include <ctime>
11 #include <cstdio>
12 #include <radarelab/logging.h>
13 #include <functional>
14 #include <vector>
15 #include <H5Cpp.h>
16 #include <radarelab/RadarSite.h>
17 
18 namespace radarelab {
19 template<typename T> struct Matrix2D;
20 
21 namespace algo {
22 class DBZ;
23 class VPR;
24 }
25 
26 }
27 
28 namespace elaboradar {
29 
30 struct Config;
31 
32 struct Site;
33 
37 class Assets
38 {
39  // Una volta che abbiamo spostato tutta la ricerca dei file di dati in
40  // questa classe, dovremmo avere un modo per sapere esattamente di cosa ha
41  // bisogno il programma, e per cambiarlo in caso cambino le esigenze
42  // operative.
43 
44 protected:
45  log4c_category_t* logging_category;
46  const Config& cfg;
47  const Site* conf_site;
48  time_t conf_acq_time;
49  int conf_year;
50  int conf_month;
51  int conf_day;
52  int conf_hour;
53  int conf_minute;
54  mutable H5::H5File* outfile_devel_data;
55 
56 public:
63  Assets(const Config& cfg);
64  ~Assets();
65 
72  void configure(const Site& site, time_t acq_time);
73 
80  void configure(const char* site, time_t acq_time);
81 
89  bool save_acq_time(time_t acq_time=0);
90 
100  void load_dem(radarelab::Matrix2D<float>& matrix);
101 
109 
117 
125 
131  double read_file_hray(std::function<void (unsigned el, unsigned bin, double value)> on_sample);
132 
138  double read_file_hray_inf(std::function<void (unsigned el, unsigned bin, double value)> on_sample);
139 
148  float read_t_ground() const;
149  //* @param[out] t_gr temperatura al suolo
150  //* @return ierr codice di uscita (0=ok 1=fallito)
151 
158  long int read_profile_gap() const;
159  //** param[in] nomefile nome del file LAST_VPR dove c'e' la data cui si riferisce l'ultimo profilo prodotto in n0 di secondi a partire da istante di riferimento
160 
167  int read_vpr_heating() const;
168 
173  void write_vpr_heating(int value) const;
174 
181  bool read_0term(float& zeroterm);
182 
185  void write_last_vpr();
186 
190  int read_vpr_hmax();
191 
195  void write_vpr_hmax(int hvprmax);
196 
203  bool read_vpr0(radarelab::algo::VPR& vpr0);
204 
210  bool read_archived_vpr(const radarelab::algo::DBZ& dbz, time_t time, radarelab::algo::VPR& vpr);
211 
215  bool find_vpr0(const radarelab::algo::DBZ& dbz, radarelab::algo::VPR& vpr0, long int& gap);
216 
221  void write_vpr0(const radarelab::algo::VPR& vpr);
222 
227 
233  H5::H5File get_devel_data_output() const;
234 
245  void write_image(const radarelab::Matrix2D<unsigned char>& image, const char* dir_env_var, const char* ext, const char* desc);
246 
258  void write_subimage(const radarelab::Matrix2D<unsigned char>& image, unsigned image_side, const char* dir_env_var, const char* ext, const char* desc);
271  void write_subimage(const radarelab::Matrix2D<unsigned char>& image, unsigned image_side, std::string algos, const char* dir_env_var, const char* ext, const char* desc);
272 
281  template<typename T>
282  void write_gdal_image(const radarelab::Matrix2D<T>& image, const char* dir_env_var, const char* name, const char* format);
283 
286  std::string fname_from_acq_time() const;
287 
288  time_t getAcqTime();
289  RadarSite getRadarSite();
290 
291 
292 protected:
293 
295  std::string fname_out_pp_bloc(const char* suffix) const;
296 
298  template<typename T>
299  void load_raw(const std::string& fname, const char* desc, radarelab::Matrix2D<T>& matrix);
300 
302  void load_ascii(const std::string& fname, const char* desc, radarelab::Matrix2D<float>& matrix);
303 };
304 
305 }
306 
307 #endif
Radar site information.
Definition: site.h:23
void configure(const Site &site, time_t acq_time)
Configure asset lookup with the given details.
Definition: assets.cpp:41
void write_vpr_hmax(int hvprmax)
write in $VPR_HMAX the vpr peak&#39;s height.
Definition: assets.cpp:320
float read_t_ground() const
fornisce temperatura al suolo, da lettura file esterno
Definition: assets.cpp:199
void write_vpr0(const radarelab::algo::VPR &vpr)
Write in $VPR0_FILE the vpr calculated.
Definition: assets.cpp:435
bool find_vpr0(const radarelab::algo::DBZ &dbz, radarelab::algo::VPR &vpr0, long int &gap)
Read the gap and the vpr0, and if vpr0 is not found, look it up among the archived VPRs...
Definition: assets.cpp:389
Class to manage reflectivity functions (simply attenuation correction, conversion between Z...
Definition: dbz.h:22
void write_subimage(const radarelab::Matrix2D< unsigned char > &image, unsigned image_side, const char *dir_env_var, const char *ext, const char *desc)
Write an image in a raw file in ${dir_env_var}, with the acquisition date as file name and the given ...
Definition: assets.cpp:572
Assets(const Config &cfg)
Constructor.
Definition: assets.cpp:22
void write_vpr_heating(int value) const
Write a new value to $VPR_HEATING (counter of consecutive vpr calculated, see scientific documentatio...
Definition: assets.cpp:265
H5::H5File get_devel_data_output() const
Return an open HDF5 File ( $DIR_QUALITY/devel-data.h5) to which we can write datasets used to debug r...
Definition: assets.cpp:466
std::string fname_out_pp_bloc(const char *suffix) const
Compute the file name of a date/time based file in $DIR_OUT_PP_BLOC.
Definition: assets.cpp:187
std::string fname_from_acq_time() const
Build a basename (without extension) for a file given the current acquisition time.
Definition: assets.cpp:529
bool read_vpr0(radarelab::algo::VPR &vpr0)
Read in $VPR0_FILE the last vpr available.
Definition: assets.cpp:329
void load_first_level(radarelab::Matrix2D< unsigned char > &matrix)
Open the first level file.
Definition: assets.cpp:120
void load_dem(radarelab::Matrix2D< float > &matrix)
Open the dem file.
Definition: assets.cpp:115
void load_first_level_bb_bloc(radarelab::Matrix2D< unsigned char > &matrix)
Open the first level elevation BB bloc file.
Definition: assets.cpp:133
bool read_0term(float &zeroterm)
Read $FILE_ZERO_TERMICO.
Definition: assets.cpp:276
void load_raw(const std::string &fname, const char *desc, radarelab::Matrix2D< T > &matrix)
Load a Matrix2D, from packed row-major binary data.
Definition: assets.cpp:480
int read_vpr_heating() const
Read the value of $VPR_HEATING (counter of consecutive vpr calculated, see scientific documentation) ...
Definition: assets.cpp:248
bool save_acq_time(time_t acq_time=0)
Save acq_time in $LAST_FILE, comparing it with the previous value.
Definition: assets.cpp:53
void write_last_vpr()
Write the acquisition time in $LAST_VPR file.
Definition: assets.cpp:292
int read_vpr_hmax()
Read in $VPR_HMAX the vpr peak&#39;s height.
Definition: assets.cpp:303
void write_image(const radarelab::Matrix2D< unsigned char > &image, const char *dir_env_var, const char *ext, const char *desc)
Write an image in a raw file in ${dir_env_var}, with the acquisition date as file name and the given ...
Definition: assets.cpp:543
void load_first_level_bb_el(radarelab::Matrix2D< unsigned char > &matrix)
Open the first level elevation BB el file.
Definition: assets.cpp:128
Finds resources, like data files, used by the program.
Definition: assets.h:37
double read_file_hray_inf(std::function< void(unsigned el, unsigned bin, double value)> on_sample)
Read the hray file, calling a callback on each parsed value.
Definition: assets.cpp:179
void write_gdal_image(const radarelab::Matrix2D< T > &image, const char *dir_env_var, const char *name, const char *format)
Write a graphic image with gdal.
Definition: assets.cpp:638
long int read_profile_gap() const
Read the gap between the time in $LAST_VPR and the current acquisition time.
Definition: assets.cpp:229
bool read_archived_vpr(const radarelab::algo::DBZ &dbz, time_t time, radarelab::algo::VPR &vpr)
Try to read the archived VPR at time time.
Definition: assets.cpp:345
double read_file_hray(std::function< void(unsigned el, unsigned bin, double value)> on_sample)
Read the hray file, calling a callback on each parsed value.
Definition: assets.cpp:171
void load_ascii(const std::string &fname, const char *desc, radarelab::Matrix2D< float > &matrix)
Load a Matrix2D, from space-separated column-major ascii floats.
Definition: assets.cpp:513
void write_dbz_coefficients(const radarelab::algo::DBZ &dbz)
Write in $OUTPUT_Z_LOWRIS_DIR/MP_coeff the MP coefficients.
Definition: assets.cpp:450
Radar Site description.