Elaboradar  0.1
cleaner.h
Vai alla documentazione di questo file.
1 
5 #ifndef RADARELAB_ALGO_CLEANER_H
6 #define RADARELAB_ALGO_CLEANER_H
7 
8 #include <radarelab/volume.h>
9 #include <radarelab/loader.h>
10 
11 #include <fstream>
12 #include <string>
13 
14 using namespace Eigen;
15 using namespace std;
16 namespace radarelab {
17 namespace algo {
21 struct Cleaner
22 {
23  const unsigned min_segment_length = 2;
24  const unsigned max_segment_length = 40;
25 
26  const double Z_missing;
27  const double W_threshold;
28  const double V_missing;
29  const double bin_wind_magic_number;
30  const double sd_threshold = 2;
31 
33  Cleaner(double Z_missing, double W_threshold, double V_missing, double bin_wind_magic_number)
34  : Z_missing(Z_missing), W_threshold(W_threshold), V_missing(V_missing), bin_wind_magic_number(bin_wind_magic_number) {}
42  std::vector<bool> clean_beam(const Eigen::VectorXd& beam_z, const Eigen::VectorXd& beam_w, const Eigen::VectorXd& beam_v,int i) const;
52  std::vector<unsigned char> eval_clean_beam(const Eigen::VectorXd& beam_z, const Eigen::VectorXd& beam_w, const Eigen::VectorXd& beam_v,int i) const;
53 
68  std::vector<bool> clean_beam(const Eigen::VectorXd& beam_z, const Eigen::VectorXd& beam_w, const Eigen::VectorXd& beam_v, const Eigen::VectorXd& beam_sd, const Eigen::VectorXd& beam_sdzdr, PolarScan<double>& scan_z, PolarScan<double>& scan_w, PolarScan<double>& scan_v, PolarScan<double>& SD,int iray) const;
69 
83  std::vector<bool> clean_beam(const Eigen::VectorXd& beam_z, const Eigen::VectorXd& beam_w, const Eigen::VectorXd& beam_v, const Eigen::VectorXd& beam_sd, PolarScan<double>& scan_z, PolarScan<double>& scan_w, PolarScan<double>& scan_v, PolarScan<double>& SD,int iray) const;
84  std::vector<unsigned char> eval_clean_beam(const Eigen::VectorXd& beam_z, const Eigen::VectorXd& beam_w, const Eigen::VectorXd& beam_v, const Eigen::VectorXd& beam_sd, const Eigen::VectorXd& beam_sdray, const Eigen::VectorXd& beam_sdaz, int iray) const;
85  tuple<std::vector<unsigned char>,std::vector<double>> eval_classID_beam(const Eigen::VectorXd& beam_z, const Eigen::VectorXd& beam_w, const Eigen::VectorXd& beam_v, const Eigen::VectorXd& beam_sd, const Eigen::VectorXd& beam_zdr, const Eigen::VectorXd& beam_rohv, const Eigen::VectorXd& beam_sqi, const Eigen::VectorXd& beam_snr, const Eigen::VectorXd& beam_zvd, const Eigen::VectorXd& beam_sdray, const Eigen::VectorXd& beam_sdaz, const Eigen::VectorXd& beam_zdr_sd, int iray, const string radar, double v_ny, const char* fuzzy_path, bool stamp=false, bool force_meteo=false) const;
86 
94  std::vector<unsigned char> eval_classID_beam(const Eigen::VectorXd& beam_z, const Eigen::VectorXd& beam_w, const Eigen::VectorXd& beam_v, const Eigen::VectorXd& beam_sd, const Eigen::VectorXd& beam_sdray, const Eigen::VectorXd& beam_sdaz, int iray, const string radar, double v_ny, const char* fuzzy_path) const;
95  static void clean(PolarScan<double>& scan_Z, PolarScan<double>& scan_W, PolarScan<double>& scan_V,unsigned iel=0, bool set_undetect=false);
96  static void evaluateCleanID(PolarScan<double>& scan_Z, PolarScan<double>& scan_W, PolarScan<double>& scan_V,PolarScan<unsigned char>& scan_cleanID, unsigned iel=0);
105  static void clean(PolarScan<double>& scan_Z, PolarScan<double>& scan_W, PolarScan<double>& scan_V, double bin_wind_magic_number,unsigned iel=0, bool set_undetect=false);
106 
115  static void clean(PolarScan<double>& scan_Z, PolarScan<double>& scan_W, PolarScan<double>& scan_V, PolarScan<double>& scan_ZDR,unsigned iel=0, bool set_undetect=false);
116 
117  static void evaluateCleanID(PolarScan<double>& scan_Z, PolarScan<double>& scan_W, PolarScan<double>& scan_V,PolarScan<unsigned char>& scan_cleanID, double bin_wind_magic_number, unsigned iel=0);
118 
119  static void evaluateClassID(PolarScan<double>& scan_Z, PolarScan<double>& scan_W, PolarScan<double>& scan_V, PolarScan<double>& scan_zdr, PolarScan<double>& scan_rohv, PolarScan<double>& scan_sqi, PolarScan<double>& scan_snr, PolarScan<double>& scan_zvd, PolarScan<unsigned char>& scan_cleanID, PolarScan<double>&scan_DiffProb, double bin_wind_magic_number, const string radar, const char* fuzzy_path, unsigned iel, bool force_meteo=false);
129  static void evaluateClassID(PolarScan<double>& scan_Z, PolarScan<double>& scan_W, PolarScan<double>& scan_V, PolarScan<unsigned char>& scan_cleanID, double bin_wind_magic_number, const string radar, const char* fuzzy_path, unsigned iel=0);
130  static void clean(PolarScan<double>& scan_Z, PolarScan<double>& scan_W, PolarScan<double>& scan_V, PolarScan<double>& scan_ZDR, double bin_wind_magic_number,unsigned iel=0, bool set_undetect=false);
131 
138  static void clean( radarelab::volume::Loader load_structure, double bin_wind_magic_number,unsigned iel=0, bool set_undetect=false);
139 
143  double trap(double x1, double x2, double x3, double x4, double val, double x5=-9999.) const;
144 
145  /*function reading matrix from txt file*/
146  vector<string> read_matrix_from_txt(string fin) const;
147 
148 };
149 
150 }
151 }
152 
153 #endif
PolarScan - structure to describe a polarScan containing a matrix of data and conversion factors.
Definition: volume.h:113
Codice per il caricamento di volumi in radarelab.
String functions.
Definition: cart.cpp:4
Cleaner(double Z_missing, double W_threshold, double V_missing, double bin_wind_magic_number)
Constructor.
Definition: cleaner.h:33
const double Z_missing
Valore dato mancante DBZH.
Definition: cleaner.h:26
const double bin_wind_magic_number
valore magico per dati in formato SP20
Definition: cleaner.h:29
const double W_threshold
Soglia per WRAD.
Definition: cleaner.h:27
const double V_missing
Dato mancante per VRAD.
Definition: cleaner.h:28
Struttura per cleaner dati grezzi sulla base dei valori di V, W e la deviazione standard di Z.
Definition: cleaner.h:22
Struttura che contiene mappa per caricamento dati.
Definition: loader.h:25
Definisce le principali strutture che contengono i dati.