Elaboradar  0.1
 Tutto Classi Namespace File Funzioni Variabili Tipi enumerati (enum) Gruppi
void classifier::HCA_Park_2009 ( float  Ht,
float  Hb 
)

Compute Echo Classes Park et al. (2009) HCA algorithm.

Definizione alla linea 545 del file classifier.cpp.

Referenzia class_designation(), melting_layer_classification(), radarelab::volume::Scans< T >::scan(), vol_Ai, vol_grad_phi_phi, vol_grad_phi_theta, vol_grad_z_phi, vol_grad_z_theta, vol_grad_zdr_phi, vol_grad_zdr_theta, vol_lkdp_2km, vol_lkdp_6km, vol_phidp, vol_rhohv, vol_rhohv_2km, vol_sdphidp, vol_sdz, vol_snr, vol_vrad, vol_z, vol_z_1km, vol_zdr, e vol_zdr_2km.

546 {
547  vector< vector< HCA_Park > > SCAN;
548  vector< HCA_Park > BEAM;
549  printf("inizio HCA\n");
550  vol_Ai.resize(vol_z.size());
551  double Z,Zdr,rhohv,lkdp,sdz,sdphidp,vrad;
552  double phidp,snr,gradphitheta,gradphiphi,gradZtheta,gradZphi,gradZdrtheta,gradZdrphi;
553  for(unsigned el=0;el<vol_z.size();el++)
554  {
555  cout<<"\tHCA el "<<el<<endl;
556  SCAN.resize(vol_z.scan(el).beam_count);
557  for(unsigned az=0;az<vol_z.scan(el).beam_count;az++)
558  {
559  BEAM.resize(vol_z.scan(el).beam_size);
560  for(unsigned rg=0;rg<vol_z.scan(el).beam_size;rg++)
561  {
562  Z=vol_z_1km.scan(el).get(az,rg);
563  Zdr=vol_zdr_2km.scan(el).get(az,rg);
564  rhohv=vol_rhohv_2km.scan(el).get(az,rg);
565  lkdp=Z>40?vol_lkdp_2km[el].get(az,rg):vol_lkdp_6km[el].get(az,rg);
566  sdz=vol_sdz.scan(el).get(az,rg);
567  sdphidp=vol_sdphidp.scan(el).get(az,rg);
568  vrad=vol_vrad.scan(el).get(az,rg);
569  phidp=vol_phidp[el](az,rg);
570  snr=vol_snr[el](az,rg);
571  gradphitheta=vol_grad_phi_theta[el](az,rg);
572  gradphiphi=vol_grad_phi_phi[el](az,rg);
573  gradZtheta=vol_grad_z_theta[el](az,rg);
574  gradZphi=vol_grad_z_phi[el](az,rg);
575  gradZdrtheta=vol_grad_zdr_theta[el](az,rg);
576  gradZdrphi=vol_grad_zdr_phi[el](az,rg);
577 
578  HCA_Park hca(Z,Zdr,rhohv,lkdp,sdz,sdphidp,vrad,phidp,snr,gradphitheta,gradphiphi,gradZtheta,gradZphi,gradZdrtheta,gradZdrphi);
579  BEAM[rg]=hca;
580  }
581  SCAN[az]=BEAM;
582  }
583  vol_Ai[el]=SCAN;
584  }
585  // Dopo aver calcolato i valori di aggregazione cerco il melting layer
586  MeltingLayer ML(vol_z,vol_zdr,vol_rhohv,vol_Ai);
587  cout<<"applico ML criteria ad HCA"<<endl;
588  melting_layer_classification(ML, Ht, Hb);
589  class_designation(1,1);
590 /* unsigned elev=1;
591  unsigned azim=140;
592  cout<<"GC\tBS\tDS\tWS\tCR\tGR\tBD\tRA\tHR\tRH"<<endl;
593  for(unsigned rg=0;rg<vol_Ai[elev][azim].size();rg++)
594  {
595  cout.precision(5);
596  cout<<fixed<<vol_Ai[elev][azim][rg].Ai[GC_AP]<<"\t"<<vol_Ai[elev][azim][rg].Ai[BS]<<"\t"<<
597  vol_Ai[elev][azim][rg].Ai[DS]<<"\t"<<vol_Ai[elev][azim][rg].Ai[WS]<<"\t"<<
598  vol_Ai[elev][azim][rg].Ai[CR]<<"\t"<<vol_Ai[elev][azim][rg].Ai[GR]<<"\t"<<
599  vol_Ai[elev][azim][rg].Ai[BD]<<"\t"<<vol_Ai[elev][azim][rg].Ai[RA]<<"\t"<<
600  vol_Ai[elev][azim][rg].Ai[HR]<<"\t"<<vol_Ai[elev][azim][rg].Ai[RH]<<"\t"<<
601  vol_hca[elev](azim,rg)<<endl;
602  }
603 */
604 }
Volume< double > vol_lkdp_6km
Definition: classifier.h:416
PolarScan< T > & scan(unsigned idx)
Access a polar scan.
Definition: volume.h:311
Volume< double > vol_phidp
Definition: classifier.h:380
Volume< double > vol_snr
Definition: classifier.h:388
void class_designation(unsigned win_rg=1, unsigned win_az=1)
Designate class echo Find the maximum of aggregation values.
Definition: classifier.cpp:446
Volume< double > vol_rhohv_2km
Definition: classifier.h:400
Volume< double > vol_sdphidp
Definition: classifier.h:424
Volume< double > vol_grad_phi_phi
Definition: classifier.h:444
void melting_layer_classification(MeltingLayer &ML, float Ht, float Hb)
Check consistency respect to Melting Layer height.
Definition: classifier.cpp:363
Volume< double > vol_zdr_2km
Definition: classifier.h:396
Volume< double > vol_grad_zdr_theta
Definition: classifier.h:440
Volume< double > vol_grad_z_phi
Definition: classifier.h:428
Volume< double > vol_sdz
Definition: classifier.h:420
std::vector< std::vector< std::vector< HCA_Park > > > vol_Ai
Definition: classifier.h:360
Volume< double > vol_grad_zdr_phi
Definition: classifier.h:436
Volume< double > vol_grad_phi_theta
Definition: classifier.h:448
Volume< double > vol_zdr
Definition: classifier.h:372
Volume< double > vol_z_1km
Definition: classifier.h:392
Volume< double > vol_lkdp_2km
Definition: classifier.h:412
Volume< double > vol_grad_z_theta
Definition: classifier.h:432
Volume< double > vol_vrad
Definition: classifier.h:384
Volume< double > vol_rhohv
Definition: classifier.h:376