Elaboradar 0.1
Caricamento in corso...
Ricerca in corso...
Nessun risultato
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
14namespace radarelab {
15template<typename T> class Volume;
16
17namespace algo {
18
22class DBZ
23{
24protected:
25 void init(int month, double base_cell_size);
26
27public:
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
Homogeneous volume with a common beam count for all PolarScans.
Definition: volume.h:431
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
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 ZtoR(double z, double aMP, double bMP)
funzione che converte Z in R usando a e b variabili
Definition: dbz.h:162
static constexpr double ZtoDBZ(double Z)
funzione che converte Z in dBZ
Definition: dbz.h:126
static constexpr double beam_blocking_correction(double val_db, double beamblocking)
@function Compute the corrected value (in dB) given the original value (in dB) and the beam blocking ...
Definition: dbz.h:70
double attenuation(unsigned char DBZbyte, double PIA)
funzione che calcola l'attenuazione totale
Definition: dbz.cpp:51
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 double BYTEtoZ(unsigned char byte)
funzione che converte byte in Z
Definition: dbz.cpp:125
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 DBZtoZ(double DBZ)
funzione che converte dBZ in Z
Definition: dbz.h:119
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 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
double base_cell_size
cella size dimension
Definition: dbz.h:28
Class to manage reflectivity functions (simply attenuation correction, conversion between Z,...
Definition: dbz.h:23
String functions.
Definition: cart.cpp:4