Elaboradar  0.1
 Tutto Classi Namespace File Funzioni Variabili Tipi enumerati (enum) Gruppi
dbz.h
Vai alla documentazione di questo file.
1 
5 #ifndef RADARELAB_ALGO_DBZ_H
6 #define RADARELAB_ALGO_DBZ_H
7 
8 #include <cmath>
9 
10 #define MISSING_DB (-20.)
11 #define MINVAL_DB (80./255.-20.)
12 #define MAXVAL_DB (60.)
13 
14 namespace radarelab {
15 template<typename T> class Volume;
16 
17 namespace algo {
18 
22 class DBZ
23 {
24 protected:
25  void init(int month, double base_cell_size);
26 
27 public:
28  double base_cell_size;
29  double aMP, bMP;
30 
31  DBZ(const Volume<double>& volume);
32 
38  DBZ(int month, double base_cell_size);
39 
50  double attenuation(unsigned char DBZbyte, double PIA);
51  double attenuation(double DBZvalue, double PIA); /* Doviak,Zrnic,1984 for rain as reported in cost 717 final document*/
52 
53  // TODO: find better names for these:
54  // RtoDBZ calcolato su aMP e bMP
55  double RtoDBZ(double rain) const;
56  double DBZtoR(double dbz) const;
57  double DBZ_snow(double dbz) const;
58  double DBZ_conv(double dbz) const;
59  double RtoDBZ_class(double R) const;
60  double DBZ_to_mp_func(double sample) const;
61 
70  static constexpr inline double beam_blocking_correction(double val_db, double beamblocking)
71  {
72  return val_db - 10 * log10(1. - beamblocking / 100.);
73  }
74 
82  static constexpr inline double BYTEtoDB(unsigned char DBZbyte, double gain=80./255., double offset=-20.)
83  {
84  return (DBZbyte * gain + offset);
85  }
86 
94  static inline unsigned char DBtoBYTE(double DB, double gain=80./255., double offset=-20.)
95  {
96  int byt = round((DB - offset) / gain);
97  if (byt <= 0)
98  return 0;
99  else if (byt <= 255)
100  return (unsigned char)(byt);
101  else
102  return 255;
103  }
104 
112  static double BYTEtoZ(unsigned char byte);
113 
119  static constexpr inline double DBZtoZ(double DBZ) { return pow(10., DBZ * 0.1); }
120 
126  static constexpr inline double ZtoDBZ(double Z) { return 10 * log10(Z); }
127 
135  static constexpr inline double DBZtoR( double dbz, double aMP, double bMP) { return pow(pow(10., dbz / 10.) / aMP,1. / bMP); }
136 
144  static constexpr inline double RtoDBZ( double rain, double aMP, double bMP) { return 10. * (log10(aMP * pow(rain, bMP))); }
145 
153  static constexpr inline double RtoZ( double rain, double aMP, double bMP) { return aMP * pow(rain, bMP); }
154 
162  static constexpr inline double ZtoR( double z, double aMP, double bMP) { return pow(z / aMP, 1. / bMP); }
163 
173  static constexpr inline double BYTE_to_mp_func(unsigned char byte, double aMP, double bMP, double gain=80./255., double offset=-20.)
174  {
175  return pow(pow(10., 0.1 * (byte * gain + offset)) / aMP, 1. / bMP);
176  }
177 };
178 
179 }
180 }
181 
182 #endif
183 
static constexpr double DBZtoR(double dbz, double aMP, double bMP)
funzione che converte dbZ in R usando a e b variabili
Definition: dbz.h:135
static constexpr double BYTEtoDB(unsigned char DBZbyte, double gain=80./255., double offset=-20.)
funzione che converte Z unsigned char in DBZ
Definition: dbz.h:82
Class to manage reflectivity functions (simply attenuation correction, conversion between Z...
Definition: dbz.h:22
static constexpr double ZtoDBZ(double Z)
funzione che converte Z in dBZ
Definition: dbz.h:126
static constexpr double BYTE_to_mp_func(unsigned char byte, double aMP, double bMP, double gain=80./255., double offset=-20.)
funzione che converte byte in R usando a e b variabili
Definition: dbz.h:173
static constexpr double beam_blocking_correction(double val_db, double beamblocking)
Compute the corrected value (in dB) given the original value (in dB) and the beam blocking percentage...
Definition: dbz.h:70
static constexpr double RtoZ(double rain, double aMP, double bMP)
funzione che converte R in Z usando a e b variabili
Definition: dbz.h:153
static unsigned char DBtoBYTE(double DB, double gain=80./255., double offset=-20.)
funzione che converte dB in valore intero tra 0 e 255
Definition: dbz.h:94
double base_cell_size
cella size dimension
Definition: dbz.h:28
double attenuation(unsigned char DBZbyte, double PIA)
funzione che calcola l&#39;attenuazione totale
Definition: dbz.cpp:51
static double BYTEtoZ(unsigned char byte)
funzione che converte byte in Z
Definition: dbz.cpp:125
static constexpr double DBZtoZ(double DBZ)
funzione che converte dBZ in Z
Definition: dbz.h:119
static constexpr double RtoDBZ(double rain, double aMP, double bMP)
funzione che converte R in dbZ usando a e b variabili
Definition: dbz.h:144
static constexpr double ZtoR(double z, double aMP, double bMP)
funzione che converte Z in R usando a e b variabili
Definition: dbz.h:162