Elaboradar  0.1

◆ declutter_anaprop()

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 389 del file cum_bac.cpp.

390 {
391  //-------------leggo mappa statica ovvero first_level (funzione leggo_first_level)------------
393 
394  //-------------se definita qualita' leggo dem e altezza fascio (mi servono per calcolare qualità)
395  if (do_quality)
396  {
399  }
400 
401  //------------se definito DECLUTTER , non rimuovo anap e riscrivo volume polare facedndo declutter solo con mappa statica.... ancora valido?
402 
403  if (do_declutter)
404  {
405  for(unsigned i=0; i<NUM_AZ_X_PPI; i++)
406  for(unsigned k=0; k<volume[0].beam_size; k++)
407  {
408  //---assegno el_inf a mappa statica
409  unsigned el_inf = first_level_static(i, k);
410  //---ricopio valori a mappa statica sotto
411  for(unsigned l=0; l<=el_inf; l++)
412  {
413  // Enrico: cerca di non leggere/scrivere fuori dal volume effettivo
414  if (k >= volume[l].beam_size) continue;
415  if (k < volume[el_inf].beam_size)
416  volume[l].set(i, k, volume[el_inf].get(i, k));
417  else
418  volume[l].set(i, k, MISSING_DB);
419  //------------se definito BEAM BLOCKING e non definito BLOCNOCORR (OPZIONE PER non correggere il beam blocking a livello di mappa statica PUR SAPENDO QUANT'È)
421  volume[l].set(i, k, algo::DBZ::beam_blocking_correction(volume[l].get(i, k), beam_blocking(i, k)));
422  }
423  }
424 
425  anaprop.init_elev_fin_static(volume, first_level_static);
426  LOG_INFO("declutter_anaprop completed with static declutter");
427  }
428 
429  //------------se non definito DECLUTTER inizio rimozione propagazione anomala al livello mappa dinamica e elaborazioni accessorie
430  else if (do_anaprop)
431  {
432  /* 26-5-2004 : se sono alla 1 o successive elevazioni
433  e range > 60 km cambio le soglie, in modo
434  da evitare di riconoscere come anaprop una pioggia shallow
435  Il criterio diventa: - se la differenza tra Z all'elevazione più bassa della
436  corrente e la Z corrente è <10 dbZ allora
437  rendo inefficaci i limiti di riconoscimento anaprop. */
438 
439  //--------ciclo sugli azimut e bins per trovare punti con propagazione anomala----------------
440 
441  textureSD(volume,SD_Z6,6000., false);
442 
443  // test to define the more appropriate value for textture_threshold for rainy and clutter data
444  std::vector <double> above_0 (4,0);
445  std::vector <double> above_15 (4,0);
446  std::vector <double> above_30 (4,0);
447  std::vector <double> above_40 (4,0);
448  for( unsigned el =0; el <4; el++)
449  for (unsigned iaz=0; iaz<volume[el].beam_count; iaz++)
450  for (unsigned k=80; k < volume[el].beam_size; k ++)
451  if (volume[el].get(iaz,k) > 40.){
452  above_0[el]++;
453  above_15[el]++;
454  above_30[el]++;
455  above_40[el]++;
456  } else if (volume[el].get(iaz,k) > 30.){
457  above_0[el]++;
458  above_15[el]++;
459  above_30[el]++;
460  } else if (volume[el].get(iaz,k) > 15.){
461  above_0[el]++;
462  above_15[el]++;
463  } else if (volume[el].get(iaz,k) > 0.){
464  above_0[el]++;
465  }
466 
467  anaprop.do_quality = do_quality;
468  anaprop.do_beamblocking = do_beamblocking;
469  anaprop.do_bloccorr = do_bloccorr;
470  if ( above_15[2]/above_15[0] >= 0.025){
471  if (above_0[1]/above_0[0] >= 0.6 && above_30[2]/above_15[2] <0.15 && above_0[1] >=50000){
472  anaprop.conf_texture_threshold = 5.;
473  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] );
475  } else {
476  // anaprop.conf_texture_threshold = 5.;
478  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] );
479  }
480  } else {
482  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] );
483 
484  }
485  LOG_INFO("declutter_anaprop completed with anaprop");
486  ScrivoStatistica(anaprop.grid_stats);
487  }
488  else
489  {
490  LOG_WARN("declutter_anaprop completed without doing anything");
491  }
492 
493  //---------------------------- Code to plot data from polarMatrix
494  /* Image <unsigned char> toBePlotted (volume[0].beam_size, volume[0].beam_count);
495  for(unsigned i=0; i<volume[0].beam_count; i++)
496  for(unsigned k=0 ; k<volume[0].beam_size; k++){
497  toBePlotted(i,k)= DBtoBYTE(volume[0].get(i, k));
498  }
499  radarelab::write_image(toBePlotted, "/ponte/rad_svn/proc_operative/test_arch/rev_actual/radar/Polarplot.png", "PNG");*/
500  LOG_INFO("elabora_Dato completata");
501 }
void load_dem(radarelab::Matrix2D< float > &matrix)
Open the dem file.
Definition: assets.cpp:115
bool do_declutter
use only static declutter map
Definition: cum_bac.h:96
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
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
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 > first_level
mappa dinamica complessiva
Definition: cum_bac.h:123
radarelab::Volume< double > SD_Z6
Polar volume of standard deviation of reflectivity over 6 km length.
Definition: cum_bac.h:107
bool do_anaprop
anaprop correction
Definition: cum_bac.h:101
bool do_bloccorr
bloccorrection
Definition: cum_bac.h:95
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 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
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
const unsigned max_beam_size() const
Return the maximum beam size in all PolarScans.
Definition: volume.h:455
const unsigned beam_count
Number of beam_count used ast each elevations.
Definition: volume.h:432

Referenzia anaprop, assets, beam_blocking, dem, do_anaprop, do_beamblocking, do_bloccorr, do_declutter, do_quality, first_level_static, leggo_first_level(), elaboradar::Assets::load_dem(), radarelab::Volume< T >::max_beam_size(), radarelab::PolarScan< T >::resize_beams_and_propagate_last_bin(), e volume.