Elaboradar  0.1
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, char* fuzzypath, bool do_clean=false, bool do_medium=false, bool set_undetect=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 
103  // add set_undetect
104  bool set_undetect=false;
105 
109 
112 
114 
115  /*-----------------------------------------------------------
116  Variabili globali
117  ------------------------------------------------------------*/
118 
119  // Data del volume che abbiamo letto
120  char date[20];
121 
122  //matrici first_level e first level da beam blocking e valore beam blocking
125 
128 
129  radarelab::algo::Anaprop<double> anaprop;
130 
131  //variabili legate a propagazione e beam blocking, da prog_bb
133 
134  // metrici qualita' come sopra
136  // top, come sopra
138 
139  /* variabili tolte perchè non presenti nel codice cum_bac... controllare che non richiamino qualcosa nelle funzioni
140  struct tm *time_dbp;
141  T_time, T_data, T_ora..*/
142 
151  CUM_BAC(radarelab::Volume<double>& volume, const Config& cfg, const Site& site, bool medium=false, unsigned max_bin=512);
152  ~CUM_BAC();
153 
158  void want_vpr();
159 
171  void declutter_anaprop();
172 
174  void vpr_class();
175 
182  void caratterizzo_volume();
183 
188  void ScrivoStatistica(const radarelab::algo::anaprop::GridStats&);
189 
195  void leggo_first_level();
196 
205 
207  void conversione_convettiva();
208  void generate_maps(CartProducts& products);
209 // added function to calculate beamblocking correction
210 
220  time_t NormalizzoData(time_t time);
221 };
222 
227 {
228  log4c_category_t* logging_category;
229 
231  radarelab::algo::InstantaneousVPR inst_vpr;
232  long int gap;
233  float t_ground;
234  //matrici che dicono se pixel convettivo secondo VIZ, STEINER, riassuntiva mette +50
236  radarelab::algo::VPR vpr;
237  int hvprmax;
238  //elab classificazione: lista punti convettivi, iaz e ira, le dimensioni sono le massime possibili, in realtà i punti sono molti meno
239  //int lista_conv[NUM_AZ_X_PPI*MAX_BIN][2];
240 
241  float resol[2];
242  int heating;
243  int livmin = 0;
244  double htbb;
245  double hbbb;
248  int ier_max;
250 
251  unsigned MyMAX_BIN;
252 
258  ~CalcoloVPR();
259 
268  int analyse_VPR(float *vpr_liq,int *snow,float *hliq);
269 
279  int profile_heating(bool has_inst_vpr);
280 
288  int trovo_hvprmax(int *hmax);
289 
295  int combina_profili(const radarelab::algo::InstantaneousVPR& inst_vpr);
296 
301  void classifica_rain();
302 
312  int corr_vpr();
313 
320  void merge_metodi(const radarelab::algo::CalcoloSteiner& steiner, const radarelab::algo::CalcoloVIZ& viz);
321 
324  int stampa_vpr();
325 
329  void esegui_tutto();
330 };
331 
336 {
337  const unsigned max_bin;
338 
340  radarelab::Image<unsigned char> cart;
345  SingleCart(unsigned max_bin);
346 
356  void creo_cart(const radarelab::Volume <double> & volume, unsigned int el_index);
357 
364  void write_out(Assets& assets, const std::string tagname, const std::string format="PNG");
365 };
366 
367 
368 // Utility functions
369 
381 float comp_levels(float v0, float v1, float nodata, float peso);
382 
383 }
384 
385 #endif
Gestisce risorse usate dal programma.
Finds resources, like data files, used by the program.
Definition: assets.h:38
bool do_declutter
use only static declutter map
Definition: cum_bac.h:96
bool do_devel
Produce additional output.
Definition: cum_bac.h:99
void declutter_anaprop()
funzione che elabora il dato radar rimuovendo anaprop e beam blocking
Definition: cum_bac.cpp:389
bool do_readStaticMap
Read Static clutter map.
Definition: cum_bac.h:100
radarelab::algo::Anaprop< double > anaprop
Oggetto per correzione ANAPRO.
Definition: cum_bac.h:129
radarelab::PolarScan< float > dem
dem in coordinate azimut range
Definition: cum_bac.h:132
CalcoloVPR * calcolo_vpr
Oggetto per calcolare e correggere con VPR.
Definition: cum_bac.h:113
time_t NormalizzoData(time_t time)
funzione che a partire dal tempo in secondi arrotonda al NMIN-esimo minuto precedente o successivo
radarelab::Volume< unsigned char > qual
qualita volume polare
Definition: cum_bac.h:135
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::PolarScan< unsigned char > first_level_static
mappa statica
Definition: cum_bac.h:124
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:503
log4c_category_t * logging_category
logging category
Definition: cum_bac.h:83
bool do_class
Convective-stratiform classification.
Definition: cum_bac.h:97
radarelab::Volume< double > & volume
Set to Z undetect value the Zpixels classified as non-meteo echoes.
Definition: cum_bac.h:106
radarelab::PolarScan< unsigned char > bb_first_level
mappa di elevazioni da beam blocking (input)
Definition: cum_bac.h:126
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
const Site & site
site information object
Definition: cum_bac.h:87
radarelab::PolarScan< unsigned char > first_level
mappa dinamica complessiva
Definition: cum_bac.h:123
char date[20]
Acquisition date.
Definition: cum_bac.h:120
radarelab::Volume< double > SD_Z6
Polar volume of standard deviation of reflectivity over 6 km length.
Definition: cum_bac.h:107
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
bool do_bloccorr
bloccorrection
Definition: cum_bac.h:95
static void read_odim_volume(radarelab::Volume< double > &volume, const Site &site, const char *nome_file, char *fuzzypath, bool do_clean=false, bool do_medium=false, bool set_undetect=false)
Read from ODIM data file.
Definition: cum_bac.cpp:190
void vpr_class()
Esegue tutta la catena vpr (e classificazione) se richiesta.
Definition: cum_bac.cpp:1383
Assets assets
others
Definition: cum_bac.h:88
bool do_medium
medium processing flag
Definition: cum_bac.h:90
radarelab::algo::DBZ dbz
????
Definition: cum_bac.h:110
bool do_quality
Feature set required for this run.
Definition: cum_bac.h:93
radarelab::CylindricalVolume cil
Volume resampled as a cylindrical volume.
Definition: cum_bac.h:108
const Config & cfg
Configuration object.
Definition: cum_bac.h:86
radarelab::PolarScan< unsigned char > top
Echo top a ???? dBZ [hm].
Definition: cum_bac.h:137
bool do_beamblocking
beamblocking corretion
Definition: cum_bac.h:94
void ScrivoStatistica(const radarelab::algo::anaprop::GridStats &)
funzione scrittura matrici statistica
Definition: cum_bac.cpp:570
radarelab::PolarScan< unsigned char > beam_blocking
mappa di beam blocking (input)
Definition: cum_bac.h:127
bool do_zlr_media
Compute ZLR map using averaging.
Definition: cum_bac.h:98
void caratterizzo_volume()
funzione che caratterizza i volumi polari tramite la qualita'
Definition: cum_bac.cpp:636
unsigned MyMAX_BIN
maximum number of beam size
Definition: cum_bac.h:85
void creo_matrice_conv()
funzioni di conversione cartesiana:associa a pixel matrice alta ris azimut e range,...
void conversione_convettiva()
Nei punti convettivi ricalcola la Z come MP classica, partendo dalla stima di R (convettiva)
Definition: cum_bac.cpp:1375
Classe principale del programma.
Definition: cum_bac.h:62
Class to manage reflectivity functions (simply attenuation correction, conversion between Z,...
Definition: dbz.h:23
float comp_levels(float v0, float v1, float nodata, float peso)
combina livelli
name space generale del programma
Definition: assets.h:28
String functions.
Definition: cart.cpp:4
void classifica_rain()
funzione che classifica la precipitazione se stratiforme o convettiva
Definition: cum_bac.cpp:748
void esegui_tutto()
Metodo che lancia tutte le operazioni per il calcolo e la correzione del vpr.
Definition: cum_bac.cpp:1538
int ier_stampa_vpr
flag d'errore su stampa profilo
Definition: cum_bac.h:249
radarelab::PolarScan< unsigned char > neve
matrice az-range che memorizza punti di neve
Definition: cum_bac.h:247
unsigned MyMAX_BIN
LUNGHEZZA MASSIMA.
Definition: cum_bac.h:251
int heating
variabile di riscaldamento
Definition: cum_bac.h:242
int ier_max
flag d'errore su calcolo quota max
Definition: cum_bac.h:248
int corr_vpr()
correzione vpr
Definition: cum_bac.cpp:975
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:847
long int gap
distanza temporale dall'ultimo file vpr [numero acquisizioni intercorse dall'ultimo vpr ?...
Definition: cum_bac.h:232
void merge_metodi(const radarelab::algo::CalcoloSteiner &steiner, const radarelab::algo::CalcoloVIZ &viz)
fa il merge dei metodi
Definition: cum_bac.cpp:817
int stampa_vpr()
stampa profilo combinato
Definition: cum_bac.cpp:935
int livmin
quota livello minimo calcolato
Definition: cum_bac.h:243
radarelab::algo::VPR vpr
Informa se il pixel è convettivo.
Definition: cum_bac.h:236
float resol[2]
array di parametri, fisso , RES_HOR_CIL E RES_VERT_CIL
Definition: cum_bac.h:241
int analyse_VPR(float *vpr_liq, int *snow, float *hliq)
funzione che analizza il profilo
Definition: cum_bac.cpp:1180
int hvprmax
quota picco vpr
Definition: cum_bac.h:237
double hbbb
altezza bottom brightband
Definition: cum_bac.h:245
int trovo_hvprmax(int *hmax)
trova il massimo del profilo
Definition: cum_bac.cpp:1100
CUM_BAC & cum_bac
oggeto CUM_BAC di riferimento
Definition: cum_bac.h:230
float t_ground
2m temperature
Definition: cum_bac.h:233
int profile_heating(bool has_inst_vpr)
calcola riscaldamento in quarti d'ora
Definition: cum_bac.cpp:905
double htbb
altezza top brightband
Definition: cum_bac.h:244
CalcoloVPR(CUM_BAC &cum_bac)
Constructor.
Definition: cum_bac.cpp:1512
radarelab::PolarScan< unsigned char > corr_polar
correzione vpr in byte 0-128 negativa 128-256 positiva, in coord az-ra
Definition: cum_bac.h:246
Struttara per il calcolo del VPR.
Definition: cum_bac.h:227
const unsigned max_bin
dimensione matrice
Definition: cum_bac.h:337
radarelab::Image< unsigned char > cart
vol_pol interpolated in a cartesian map
Definition: cum_bac.h:340
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:1676
SingleCart(unsigned max_bin)
Constructor.
Definition: cum_bac.cpp:1604
void creo_cart(const radarelab::Volume< double > &volume, unsigned int el_index)
conversione da polare a cartesiano alta risoluzione
Definition: cum_bac.cpp:1610
Struttura per gestire output cartesiano di un singolo campo.
Definition: cum_bac.h:336
Radar site information.
Definition: site.h:24
Radar volume mapped to cylindrical coordinates.
Definition: cylindrical.h:17
Definisce le principali strutture che contengono i dati.