Elaboradar  0.1
 Tutto Classi Namespace File Funzioni Variabili Tipi enumerati (enum) Gruppi
void elaboradar::CUM_BAC::declutter_anaprop ( )

funzione che elabora il dato radar rimuovendo anaprop e beam blocking

partendo dal livello della mappa dinamica esegue il test di continuità verticale e laddove non si verifica un cambio di elevazione corregge il beam blocking per ottenere infine un campo bidimensionale adeguato alla stima di R che ricopia su tutti i livelli del volume a partire dallo 0 fino al livello della mappa dinamica . Memorizza elevazione finale usata per il campo bidimensionale e l'output della rimozione della propagazione anomala e quota al livello scelto per la stima di R.

Definizione alla linea 310 del file cum_bac.cpp.

Referenzia anaprop, beam_blocking, radarelab::Volume< T >::beam_count, dem, do_anaprop, do_beamblocking, do_bloccorr, do_declutter, do_quality, first_level, first_level_static, leggo_first_level(), radarelab::Volume< T >::max_beam_size(), radarelab::PolarScan< T >::resize_beams_and_propagate_last_bin(), ScrivoStatistica(), SD_Z6, e volume.

311 {
312  //-------------leggo mappa statica ovvero first_level (funzione leggo_first_level)------------
314 
315  //-------------se definita qualita' leggo dem e altezza fascio (mi servono per calcolare qualità)
316  if (do_quality)
317  {
320  }
321 
322  //------------se definito DECLUTTER , non rimuovo anap e riscrivo volume polare facedndo declutter solo con mappa statica.... ancora valido?
323 
324  if (do_declutter)
325  {
326  for(unsigned i=0; i<NUM_AZ_X_PPI; i++)
327  for(unsigned k=0; k<volume[0].beam_size; k++)
328  {
329  //---assegno el_inf a mappa statica
330  unsigned el_inf = first_level_static(i, k);
331  //---ricopio valori a mappa statica sotto
332  for(unsigned l=0; l<=el_inf; l++)
333  {
334  // Enrico: cerca di non leggere/scrivere fuori dal volume effettivo
335  if (k >= volume[l].beam_size) continue;
336  if (k < volume[el_inf].beam_size)
337  volume[l].set(i, k, volume[el_inf].get(i, k));
338  else
339  volume[l].set(i, k, MISSING_DB);
340  //------------se definito BEAM BLOCKING e non definito BLOCNOCORR (OPZIONE PER non correggere il beam blocking a livello di mappa statica PUR SAPENDO QUANT'È)
342  volume[l].set(i, k, algo::DBZ::beam_blocking_correction(volume[l].get(i, k), beam_blocking(i, k)));
343  }
344  }
345 
346  anaprop.init_elev_fin_static(volume, first_level_static);
347  LOG_INFO("declutter_anaprop completed with static declutter");
348  }
349 
350  //------------se non definito DECLUTTER inizio rimozione propagazione anomala al livello mappa dinamica e elaborazioni accessorie
351  else if (do_anaprop)
352  {
353  /* 26-5-2004 : se sono alla 1 o successive elevazioni
354  e range > 60 km cambio le soglie, in modo
355  da evitare di riconoscere come anaprop una pioggia shallow
356  Il criterio diventa: - se la differenza tra Z all'elevazione più bassa della
357  corrente e la Z corrente è <10 dbZ allora
358  rendo inefficaci i limiti di riconoscimento anaprop. */
359 
360  //--------ciclo sugli azimut e bins per trovare punti con propagazione anomala----------------
361 
362  textureSD(volume,SD_Z6,6000., false);
363 
364  // test to define the more appropriate value for textture_threshold for rainy and clutter data
365  std::vector <double> above_0 (4,0);
366  std::vector <double> above_15 (4,0);
367  std::vector <double> above_30 (4,0);
368  std::vector <double> above_40 (4,0);
369  for( unsigned el =0; el <4; el++)
370  for (unsigned iaz=0; iaz<volume[el].beam_count; iaz++)
371  for (unsigned k=80; k < volume[el].beam_size; k ++)
372  if (volume[el].get(iaz,k) > 40.){
373  above_0[el]++;
374  above_15[el]++;
375  above_30[el]++;
376  above_40[el]++;
377  } else if (volume[el].get(iaz,k) > 30.){
378  above_0[el]++;
379  above_15[el]++;
380  above_30[el]++;
381  } else if (volume[el].get(iaz,k) > 15.){
382  above_0[el]++;
383  above_15[el]++;
384  } else if (volume[el].get(iaz,k) > 0.){
385  above_0[el]++;
386  }
387 
388  anaprop.do_quality = do_quality;
389  anaprop.do_beamblocking = do_beamblocking;
390  anaprop.do_bloccorr = do_bloccorr;
391  if ( above_15[2]/above_15[0] >= 0.025){
392  if (above_0[1]/above_0[0] >= 0.6 && above_30[2]/above_15[2] <0.15 && above_0[1] >=50000){
393  anaprop.conf_texture_threshold = 5.;
394  LOG_WARN("TEXTURE THRESHOLD USED %4.1f -- 0. %6d %6d %6d %6d -- 15. %6d %6d %6d %6d -- 30. %6d %6d %6d %6d -- 40. %6d %6d %6d %6d", anaprop.conf_texture_threshold, (int)above_0[0], (int)above_0[1], (int)above_0[2], (int)above_0[3], (int)above_15[0], (int)above_15[1], (int)above_15[2], (int)above_15[3], (int)above_30[0], (int)above_30[1], (int)above_30[2], (int)above_30[3], (int)above_40[0], (int)above_40[1], (int)above_40[2], (int)above_40[3] );
396  } else {
397  // anaprop.conf_texture_threshold = 5.;
399  LOG_WARN("THUNDERSTORM %4.1f -- 0. %6d %6d %6d %6d -- 15. %6d %6d %6d %6d -- 30. %6d %6d %6d %6d -- 40. %6d %6d %6d %6d", -9.9, (int)above_0[0], (int)above_0[1], (int)above_0[2], (int)above_0[3], (int)above_15[0], (int)above_15[1], (int)above_15[2], (int)above_15[3], (int)above_30[0], (int)above_30[1], (int)above_30[2], (int)above_30[3], (int)above_40[0], (int)above_40[1], (int)above_40[2], (int)above_40[3] );
400  }
401  } else {
403  LOG_WARN("TEXTURE THRESHOLD USED %4.1f -- 0. %6d %6d %6d %6d -- 15. %6d %6d %6d %6d -- 30. %6d %6d %6d %6d -- 40. %6d %6d %6d %6d", anaprop.conf_texture_threshold, (int)above_0[0], (int)above_0[1], (int)above_0[2], (int)above_0[3], (int)above_15[0], (int)above_15[1], (int)above_15[2], (int)above_15[3], (int)above_30[0], (int)above_30[1], (int)above_30[2], (int)above_30[3], (int)above_40[0], (int)above_40[1], (int)above_40[2], (int)above_40[3] );
404 
405  }
406  LOG_INFO("declutter_anaprop completed with anaprop");
407  ScrivoStatistica(anaprop.grid_stats);
408  }
409  else
410  {
411  LOG_WARN("declutter_anaprop completed without doing anything");
412  }
413 
414  //---------------------------- Code to plot data from polarMatrix
415  /* Image <unsigned char> toBePlotted (volume[0].beam_size, volume[0].beam_count);
416  for(unsigned i=0; i<volume[0].beam_count; i++)
417  for(unsigned k=0 ; k<volume[0].beam_size; k++){
418  toBePlotted(i,k)= DBtoBYTE(volume[0].get(i, k));
419  }
420  radarelab::write_image(toBePlotted, "/ponte/rad_svn/proc_operative/test_arch/rev_actual/radar/Polarplot.png", "PNG");*/
421  LOG_INFO("elabora_Dato completata");
422 }
Assets assets
others
Definition: cum_bac.h:88
bool do_quality
Feature set required for this run.
Definition: cum_bac.h:93
bool do_beamblocking
beamblocking corretion
Definition: cum_bac.h:94
void resize_beams_and_propagate_last_bin(unsigned new_beam_size)
Enlarges the PolarScan increasing beam_size and propagating the last bin value.
Definition: volume.h:212
bool do_anaprop
anaprop correction
Definition: cum_bac.h:101
radarelab::PolarScan< unsigned char > first_level_static
mappa statica
Definition: cum_bac.h:121
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
const unsigned beam_count
Number of beam_count used ast each elevations.
Definition: volume.h:432
radarelab::PolarScan< unsigned char > first_level
mappa dinamica complessiva
Definition: cum_bac.h:120
void ScrivoStatistica(const radarelab::algo::anaprop::GridStats &)
funzione scrittura matrici statistica
Definition: cum_bac.cpp:491
void load_dem(radarelab::Matrix2D< float > &matrix)
Open the dem file.
Definition: assets.cpp:115
radarelab::Volume< double > & volume
Polar volume of Reflectivity.
Definition: cum_bac.h:103
radarelab::PolarScan< float > dem
dem in coordinate azimut range
Definition: cum_bac.h:129
bool do_bloccorr
bloccorrection
Definition: cum_bac.h:95
radarelab::PolarScan< unsigned char > beam_blocking
mappa di beam blocking (input)
Definition: cum_bac.h:124
const unsigned max_beam_size() const
Return the maximum beam size in all PolarScans.
Definition: volume.h:455
radarelab::Volume< double > SD_Z6
Polar volume of standard deviation of reflectivity over 6 km length.
Definition: cum_bac.h:104
radarelab::algo::Anaprop< double > anaprop
Oggetto per correzione ANAPRO.
Definition: cum_bac.h:126
bool do_declutter
use only static declutter map
Definition: cum_bac.h:96