Elaboradar  0.1
 Tutto Classi Namespace File Funzioni Variabili Tipi enumerati (enum) Gruppi
cum_bac.h
Vai alla documentazione di questo file.
1 #ifndef ARCHIVIATORE_CUM_BAC_CLASS_H
2 #define ARCHIVIATORE_CUM_BAC_CLASS_H
3 
12 #include <radarelab/logging.h>
13 #include <radarelab/volume.h>
14 #include <radarelab/elev_fin.h>
15 #include <radarelab/algo/anaprop.h>
16 #include <radarelab/algo/dbz.h>
17 #include <radarelab/algo/vpr.h>
18 #include <radarelab/cylindrical.h>
19 #include "assets.h"
20 #include <stdexcept>
21 #include <cmath>
22 
23 //algoritmo
24 #include <radarelab/vpr_par.h>
25 
26 // TODO: prima o poi arriviamo a far senza di questi define
27 #define NUM_AZ_X_PPI 400
28 
29 #define MAX_BIN 512
30 
31 #define RES_VERT_CIL 0.25
32 #define RES_HOR_CIL 0.25
33 
37 namespace radarelab {
38 
39 namespace algo {
40 struct CalcoloSteiner;
41 struct CalcoloVIZ;
42 }
43 
44 }
45 
49 namespace elaboradar {
50 
51 struct Site;
52 
53 struct CalcoloVPR;
54 struct Cart;
55 struct CartLowris;
56 struct CartProducts;
57 
61 class CUM_BAC
62 {
63 public:
72  static void read_sp20_volume(radarelab::Volume<double>& volume, const Site& site, const char* nome_file, bool do_clean=false, bool do_medium=false);
81  static void read_odim_volume(radarelab::Volume<double>& volume, const Site& site, const char* nome_file, bool do_clean=false, bool do_medium=false);
82 
83  log4c_category_t* logging_category;
84 
85  unsigned MyMAX_BIN;
86  const Config& cfg;
87  const Site& site;
89 
90  bool do_medium;
91 
93  bool do_quality = false;
94  bool do_beamblocking = false;
95  bool do_bloccorr = false;
96  bool do_declutter = false;
97  bool do_class = false;
98  bool do_zlr_media = false;
99  bool do_devel = false;
100  bool do_readStaticMap = false;
101  bool do_anaprop=false;
102 
106 
109 
111 
112  /*-----------------------------------------------------------
113  Variabili globali
114  ------------------------------------------------------------*/
115 
116  // Data del volume che abbiamo letto
117  char date[20];
118 
119  //matrici first_level e first level da beam blocking e valore beam blocking
122 
125 
126  radarelab::algo::Anaprop<double> anaprop;
127 
128  //variabili legate a propagazione e beam blocking, da prog_bb
130 
131  // metrici qualita' come sopra
133  // top, come sopra
135 
136  /* variabili tolte perchè non presenti nel codice cum_bac... controllare che non richiamino qualcosa nelle funzioni
137  struct tm *time_dbp;
138  T_time, T_data, T_ora..*/
139 
148  CUM_BAC(radarelab::Volume<double>& volume, const Config& cfg, const Site& site, bool medium=false, unsigned max_bin=512);
149  ~CUM_BAC();
150 
155  void want_vpr();
156 
168  void declutter_anaprop();
169 
171  void vpr_class();
172 
179  void caratterizzo_volume();
180 
185  void ScrivoStatistica(const radarelab::algo::anaprop::GridStats&);
186 
192  void leggo_first_level();
193 
201  void creo_matrice_conv();
202 
204  void conversione_convettiva();
205  void generate_maps(CartProducts& products);
206 // added function to calculate beamblocking correction
207 
217  time_t NormalizzoData(time_t time);
218 };
219 
224 {
225  log4c_category_t* logging_category;
226 
228  radarelab::algo::InstantaneousVPR inst_vpr;
229  long int gap;
230  float t_ground;
231  //matrici che dicono se pixel convettivo secondo VIZ, STEINER, riassuntiva mette +50
233  radarelab::algo::VPR vpr;
234  int hvprmax;
235  //elab classificazione: lista punti convettivi, iaz e ira, le dimensioni sono le massime possibili, in realtà i punti sono molti meno
236  //int lista_conv[NUM_AZ_X_PPI*MAX_BIN][2];
237 
238  float resol[2];
239  int heating;
240  int livmin = 0;
241  double htbb;
242  double hbbb;
245  int ier_max;
247 
248  unsigned MyMAX_BIN;
249 
255  ~CalcoloVPR();
256 
265  int analyse_VPR(float *vpr_liq,int *snow,float *hliq);
266 
276  int profile_heating(bool has_inst_vpr);
277 
285  int trovo_hvprmax(int *hmax);
286 
292  int combina_profili(const radarelab::algo::InstantaneousVPR& inst_vpr);
293 
298  void classifica_rain();
299 
309  int corr_vpr();
310 
317  void merge_metodi(const radarelab::algo::CalcoloSteiner& steiner, const radarelab::algo::CalcoloVIZ& viz);
318 
321  int stampa_vpr();
322 
326  void esegui_tutto();
327 };
328 
333 {
334  const unsigned max_bin;
335 
337  radarelab::Image<unsigned char> cart;
342  SingleCart(unsigned max_bin);
343 
353  void creo_cart(const radarelab::Volume <double> & volume, unsigned int el_index);
354 
361  void write_out(Assets& assets, const std::string tagname, const std::string format="PNG");
362 };
363 
364 
365 // Utility functions
366 
378 float comp_levels(float v0, float v1, float nodata, float peso);
379 
380 }
381 
382 #endif
Assets assets
others
Definition: cum_bac.h:88
radarelab::PolarScan< unsigned char > corr_polar
correzione vpr in byte 0-128 negativa 128-256 positiva, in coord az-ra
Definition: cum_bac.h:243
radarelab::algo::DBZ dbz
????
Definition: cum_bac.h:107
Radar site information.
Definition: site.h:23
bool do_quality
Feature set required for this run.
Definition: cum_bac.h:93
float comp_levels(float v0, float v1, float nodata, float peso)
combina livelli
bool do_readStaticMap
Read Static clutter map.
Definition: cum_bac.h:100
double htbb
altezza top brightband
Definition: cum_bac.h:241
radarelab::PolarScan< unsigned char > bb_first_level
mappa di elevazioni da beam blocking (input)
Definition: cum_bac.h:123
Class to manage reflectivity functions (simply attenuation correction, conversion between Z...
Definition: dbz.h:22
CUM_BAC & cum_bac
oggeto CUM_BAC di riferimento
Definition: cum_bac.h:227
radarelab::PolarScan< unsigned char > neve
matrice az-range che memorizza punti di neve
Definition: cum_bac.h:244
unsigned MyMAX_BIN
LUNGHEZZA MASSIMA.
Definition: cum_bac.h:248
int ier_stampa_vpr
flag d&#39;errore su stampa profilo
Definition: cum_bac.h:246
Definisce le principali strutture che contengono i dati.
bool do_medium
medium processing flag
Definition: cum_bac.h:90
bool do_beamblocking
beamblocking corretion
Definition: cum_bac.h:94
int corr_vpr()
correzione vpr
Definition: cum_bac.cpp:894
CUM_BAC(radarelab::Volume< double > &volume, const Config &cfg, const Site &site, bool medium=false, unsigned max_bin=512)
Constructor.
Definition: cum_bac.cpp:119
bool do_anaprop
anaprop correction
Definition: cum_bac.h:101
radarelab::PolarScan< unsigned char > first_level_static
mappa statica
Definition: cum_bac.h:121
int profile_heating(bool has_inst_vpr)
calcola riscaldamento in quarti d&#39;ora
Definition: cum_bac.cpp:824
int combina_profili(const radarelab::algo::InstantaneousVPR &inst_vpr)
funzione che combina il profilo verticale corrente con quello precedente tramite il metodo di Germann...
Definition: cum_bac.cpp:766
Struttara per il calcolo del VPR.
Definition: cum_bac.h:223
CalcoloVPR * calcolo_vpr
Oggetto per calcolare e correggere con VPR.
Definition: cum_bac.h:110
void leggo_first_level()
funzione che legge la mappa statica e la mappa di elevazioni da beam blocking e le condensa in un uni...
Definition: cum_bac.cpp:424
long int gap
distanza temporale dall&#39;ultimo file vpr [numero acquisizioni intercorse dall&#39;ultimo vpr ...
Definition: cum_bac.h:229
void classifica_rain()
funzione che classifica la precipitazione se stratiforme o convettiva
Definition: cum_bac.cpp:667
radarelab::PolarScan< unsigned char > first_level
mappa dinamica complessiva
Definition: cum_bac.h:120
bool do_zlr_media
Compute ZLR map using averaging.
Definition: cum_bac.h:98
unsigned MyMAX_BIN
maximum number of beam size
Definition: cum_bac.h:85
void ScrivoStatistica(const radarelab::algo::anaprop::GridStats &)
funzione scrittura matrici statistica
Definition: cum_bac.cpp:491
Struttura per gestire output cartesiano di un singolo campo.
Definition: cum_bac.h:332
int trovo_hvprmax(int *hmax)
trova il massimo del profilo
Definition: cum_bac.cpp:1019
const Config & cfg
Configuration object.
Definition: cum_bac.h:86
static void read_sp20_volume(radarelab::Volume< double > &volume, const Site &site, const char *nome_file, bool do_clean=false, bool do_medium=false)
Read from SP20 data file.
Definition: cum_bac.cpp:152
SingleCart(unsigned max_bin)
Constructor.
Definition: cum_bac.cpp:1522
CalcoloVPR(CUM_BAC &cum_bac)
Constructor.
Definition: cum_bac.cpp:1430
float t_ground
2m temperature
Definition: cum_bac.h:230
void esegui_tutto()
Metodo che lancia tutte le operazioni per il calcolo e la correzione del vpr.
Definition: cum_bac.cpp:1456
char date[20]
Acquisition date.
Definition: cum_bac.h:117
log4c_category_t * logging_category
logging category
Definition: cum_bac.h:83
double hbbb
altezza bottom brightband
Definition: cum_bac.h:242
radarelab::Volume< double > & volume
Polar volume of Reflectivity.
Definition: cum_bac.h:103
int hvprmax
quota picco vpr
Definition: cum_bac.h:234
radarelab::PolarScan< float > dem
dem in coordinate azimut range
Definition: cum_bac.h:129
radarelab::algo::VPR vpr
Informa se il pixel è convettivo.
Definition: cum_bac.h:233
int stampa_vpr()
stampa profilo combinato
Definition: cum_bac.cpp:854
radarelab::CylindricalVolume cil
Volume resampled as a cylindrical volume.
Definition: cum_bac.h:105
Classe principale del programma.
Definition: cum_bac.h:61
bool do_class
Convective-stratiform classification.
Definition: cum_bac.h:97
bool do_bloccorr
bloccorrection
Definition: cum_bac.h:95
float resol[2]
array di parametri, fisso , RES_HOR_CIL E RES_VERT_CIL
Definition: cum_bac.h:238
static void read_odim_volume(radarelab::Volume< double > &volume, const Site &site, const char *nome_file, bool do_clean=false, bool do_medium=false)
Read from ODIM data file.
Definition: cum_bac.cpp:190
bool do_devel
Produce additional output.
Definition: cum_bac.h:99
void vpr_class()
Esegue tutta la catena vpr (e classificazione) se richiesta.
Definition: cum_bac.cpp:1301
int ier_max
flag d&#39;errore su calcolo quota max
Definition: cum_bac.h:245
radarelab::PolarScan< unsigned char > beam_blocking
mappa di beam blocking (input)
Definition: cum_bac.h:124
radarelab::Volume< unsigned char > qual
qualita volume polare
Definition: cum_bac.h:132
radarelab::Image< unsigned char > cart
vol_pol interpolated in a cartesian map
Definition: cum_bac.h:337
Finds resources, like data files, used by the program.
Definition: assets.h:37
void creo_cart(const radarelab::Volume< double > &volume, unsigned int el_index)
conversione da polare a cartesiano alta risoluzione
Definition: cum_bac.cpp:1528
int livmin
quota livello minimo calcolato
Definition: cum_bac.h:240
void caratterizzo_volume()
funzione che caratterizza i volumi polari tramite la qualita&#39;
Definition: cum_bac.cpp:557
const unsigned max_bin
dimensione matrice
Definition: cum_bac.h:334
time_t NormalizzoData(time_t time)
funzione che a partire dal tempo in secondi arrotonda al NMIN-esimo minuto precedente o successivo ...
int analyse_VPR(float *vpr_liq, int *snow, float *hliq)
funzione che analizza il profilo
Definition: cum_bac.cpp:1099
int heating
variabile di riscaldamento
Definition: cum_bac.h:239
radarelab::PolarScan< unsigned char > top
Echo top a ???? dBZ [hm].
Definition: cum_bac.h:134
radarelab::Volume< double > SD_Z6
Polar volume of standard deviation of reflectivity over 6 km length.
Definition: cum_bac.h:104
Radar volume mapped to cylindrical coordinates.
Definition: cylindrical.h:16
Gestisce risorse usate dal programma.
void merge_metodi(const radarelab::algo::CalcoloSteiner &steiner, const radarelab::algo::CalcoloVIZ &viz)
fa il merge dei metodi
Definition: cum_bac.cpp:736
void creo_matrice_conv()
funzioni di conversione cartesiana:associa a pixel matrice alta ris azimut e range, crea alta risoluzione e crea bassa risoluzione
void want_vpr()
Call this just after creating the CUM_BAC object, to signal that VPR should also be computed...
Definition: cum_bac.cpp:147
radarelab::algo::Anaprop< double > anaprop
Oggetto per correzione ANAPRO.
Definition: cum_bac.h:126
const Site & site
site information object
Definition: cum_bac.h:87
void declutter_anaprop()
funzione che elabora il dato radar rimuovendo anaprop e beam blocking
Definition: cum_bac.cpp:310
void write_out(Assets &assets, const std::string tagname, const std::string format="PNG")
Produce in output le immagini PNG dei campi in $DIR_DEBUG.
Definition: cum_bac.cpp:1594
bool do_declutter
use only static declutter map
Definition: cum_bac.h:96
void conversione_convettiva()
Nei punti convettivi ricalcola la Z come MP classica, partendo dalla stima di R (convettiva) ...
Definition: cum_bac.cpp:1293