Elaboradar  0.1

◆ caratterizzo_volume()

void elaboradar::CUM_BAC::caratterizzo_volume ( )

funzione che caratterizza i volumi polari tramite la qualita'

utilizza i parametri di ouput dell'elaborazione e la PIA calcolata qui per calcolare un valore finale di qualita' del dato. Inoltre calcola il top dell'eco in base a soglia su ogni pixel.

Definizione alla linea 636 del file cum_bac.cpp.

637 {
638  LOG_DEBUG("start caratterizzo_volume");
639 
640  HRay hray_inf(volume); /*quota limite inferiore fascio in funzione della distanza e elevazione*/
641  hray_inf.load_hray_inf(assets);
642 
643  cout<<"sono in caratterizzo volume"<<endl;
644 
645  // path integrated attenuation
646  double PIA;
647  // dimensione verticale bin calcolata tramite approcio geo-ottico
648  float dh=1.;
649  // distanza radiosondaggio,
650  float dhst=1.;
651  // tempo dal radiosondaggio
652  float drrs=1.;
653  // distanza dal radar
654  float dist=1.;
655  // beam blocking
656  unsigned char bb=0;
657  // indice clutter da anaprop
658  unsigned char cl=0;
659 
660  //----------ciclo su NSCAN(=6), cioè sul numero di elevazioni (nominali) per le quali ho calcolato il beam blocking
661  /* a questo punto servono: bb, cl, PIA, dtrs e drrs radiosond, quota, hsup e hinf beam-----------------*/
662 
663  for (unsigned l=0; l<volume.size(); l++)/*ciclo elevazioni*/// VERIFICARE CHE VADA TUTTO OK
664  {
665  const auto& scan = volume[l];
666  for (int i=0; i<NUM_AZ_X_PPI; i++)/*ciclo azimuth*/
667  {
668  const double elevaz = scan.elevations_real(i); //--- elev reale in gradi
669 
670  //--assegno PIA=0 lungo il raggio NB: il ciclo nn va cambiato in ordine di indici!
671  PIA=0.;
672 
673  for (unsigned k=0; k<scan.beam_size; k++)/*ciclo range*/
674  {
675  double sample = scan.get(i, k);
676 
677  //---------distanza in m dal radar (250*k+125 x il corto..)
678  dist = k * scan.cell_size + scan.cell_size / 2.;/*distanza radar */
679 
680  //-----distanza dal radiosondaggio (per GAT si finge che sia colocato ..), perchè? (verificare che serva )
681  drrs=dist;
682  /* if (!(strcmp(sito,"GAT")) ) { */
683  /* drrs=dist; */
684  /* } */
685  /* if (!(strcmp(sito,"SPC")) ) { */
686  /* drrs=dist; */
687  /* } */
688 
689 
690  //assegno la PIA (path integrated attenuation) nel punto e POI la incremento (è funzione dell'attenuazione precedente e del valore nel punto)
691  PIA=dbz.attenuation(DBZ::DBtoBYTE(sample),PIA);
692 
693  //------calcolo il dhst ciè l'altezza dal bin in condizioni standard utilizzando la funzione quota_f e le elevazioni reali
694  dhst = PolarScanBase::sample_height(elevaz + 0.45, dist)
695  - PolarScanBase::sample_height(elevaz - 0.45, dist);
696 
697  //----qui si fa un po' di mischione: finchè ho il dato dal programma di beam blocking uso il dh con propagazione da radiosondaggio, alle elevazioni superiori assegno dh=dhst e calcolo quota come se fosse prop. standard, però uso le elevazioni nominali
698 
699  if (l<volume.size() -1 ) {
700  // differenza tra limite sup e inf lobo centrale secondo appoccio geo-ott
701  dh = hray_inf(l + 1, k) - hray_inf(l, k);
702  }
703  else {
704  // non ho le altezze oltre nscan-1 pero' suppongo che a tali elevazioni la prop. si possa considerare standard
705  dh = dhst;
706  }
707 
708  if (l < anaprop.elev_fin(i, k)) {
709  cl=algo::ANAP_YES;
710  bb=BBMAX;
711  } else if (l == anaprop.elev_fin(i, k)) {
712  cl=anaprop.dato_corrotto(i, k); /*cl al livello della mappa dinamica*/
713  bb=beam_blocking(i, k); /*bb al livello della mappa dinamica *///sarebbe da ricontrollare perchè con la copia sopra non è più così
714  } else if (l > anaprop.elev_fin(i, k)) {
715  cl=0; /*per come viene scelta la mappa dinamica si suppone che al livello superiore cl=0 e bb=0*/
716  bb=0; // sarebbe if (l-bb_first_level(i, k) >0 bb=0; sopra all'elevazione per cui bb<soglia il bb sia =0 dato che sono contigue o più però condiz. inclusa
717  }
718 
719  //------dato che non ho il valore di beam blocking sotto i livelli che ricevo in ingresso ada progrmma beam blocking e
720  //--------dato che sotto elev_fin rimuovo i dati come fosse anaprop ( in realtà c'è da considerare che qui ho pure bb>50%)
721  //--------------assegno qualità zero sotto il livello di elev_fin (si può discutere...), potrei usare first_level_static confrontare e in caso sia sotto porre cl=1
722  if (l < anaprop.elev_fin(i, k)) {
723  qual.scan(l).set(i, k, 0);
724  cl=2;
725  } else {
726  //--bisogna ragionare di nuovo su definizione di qualità con clutter se si copia il dato sopra.--
727 
728  //--calcolo la qualità--
729  // FIXME: qui tronca: meglio un round?
730  qual.scan(l).set(i, k, (unsigned char)(func_q_Z(cl,bb,dist,drrs,hray_inf.dtrs,dh,dhst,PIA)*100));
731  }
732 
733  if (qual.scan(l).get(i, k) ==0) qual.scan(l).set(i, k, 1);//????a che serve???
734  if (calcolo_vpr)
735  {
736  /* sezione PREPARAZIONE DATI VPR*/
737  if(cl==0 && bb<BBMAX_VPR ) /*pongo le condizioni per individuare l'area visibile per calcolo VPR, riduco il bb ammesso (BBMAX_VPR=20)*/ //riveder.....?????
738  flag_vpr.scan(l).set(i, k, 1);
739  }
740  }
741  }
742  }
743 
744  LOG_DEBUG("End caratterizzo_volume");
745  return;
746 }
radarelab::algo::Anaprop< double > anaprop
Oggetto per correzione ANAPRO.
Definition: cum_bac.h:129
CalcoloVPR * calcolo_vpr
Oggetto per calcolare e correggere con VPR.
Definition: cum_bac.h:113
radarelab::Volume< unsigned char > qual
qualita volume polare
Definition: cum_bac.h:135
radarelab::Volume< double > & volume
Set to Z undetect value the Zpixels classified as non-meteo echoes.
Definition: cum_bac.h:106
Assets assets
others
Definition: cum_bac.h:88
radarelab::algo::DBZ dbz
????
Definition: cum_bac.h:110
radarelab::PolarScan< unsigned char > beam_blocking
mappa di beam blocking (input)
Definition: cum_bac.h:127
double attenuation(unsigned char DBZbyte, double PIA)
funzione che calcola l'attenuazione totale
Definition: dbz.cpp:51
PolarScan< T > & scan(unsigned idx)
Access a polar scan.
Definition: volume.h:311
float func_q_Z(unsigned char cl, unsigned char bb, float dst, float dr, float dt, float dh, float dhst, float PIA)
funzione che calcola la qualita' per Z
Definition: func_Q3d.cpp:8

Referenzia anaprop, assets, radarelab::algo::DBZ::attenuation(), dbz, e volume.

Referenziato da vpr_class().