Elaboradar 0.1
Caricamento in corso...
Ricerca in corso...
Nessun risultato

◆ 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:457
const unsigned beam_count
Number of beam_count used ast each elevations.
Definition: volume.h:434
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

Referenzia anaprop, assets, beam_blocking, radarelab::algo::DBZ::beam_blocking_correction(), radarelab::Volume< T >::beam_count, dem, do_anaprop, do_beamblocking, do_bloccorr, do_declutter, do_quality, first_level, 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(), ScrivoStatistica(), SD_Z6, e volume.