Elaboradar 0.1
|
◆ 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)------------
392 leggo_first_level();
393
394 //-------------se definita qualita' leggo dem e altezza fascio (mi servono per calcolare qualità )
396 {
399 }
400
401 //------------se definito DECLUTTER , non rimuovo anap e riscrivo volume polare facedndo declutter solo con mappa statica.... ancora valido?
402
404 {
405 for(unsigned i=0; i<NUM_AZ_X_PPI; i++)
407 {
408 //---assegno el_inf a mappa statica
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
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
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
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
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++)
452 above_0[el]++;
453 above_15[el]++;
454 above_30[el]++;
455 above_40[el]++;
457 above_0[el]++;
458 above_15[el]++;
459 above_30[el]++;
461 above_0[el]++;
462 above_15[el]++;
464 above_0[el]++;
465 }
466
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");
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 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 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 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. |