13CalcoloVIZ::CalcoloVIZ(
const CylindricalVolume& cil,
double htbb,
double hbbb,
double t_ground)
14 : cil(cil), x_size(cil.x_size), z_size(cil.z_size), htbb(htbb), hbbb(hbbb), t_ground(t_ground), res_vert_cil (cil.resol[1]),
15 conv_VIZ(
Matrix2D<unsigned char>::Constant(cil.slices.size(), x_size, MISSING)),
16 stratiform(
Matrix2D<unsigned char>::Constant(cil.slices.size(), x_size, MISSING))
18 logging_category = log4c_category_get(
"radar.vpr");
21void CalcoloVIZ::classifico_VIZ()
24 Matrix2D<double> Zabb(Matrix2D<double>::Zero(cil.slices.size(), x_size));
25 Matrix2D<double> Zbbb(Matrix2D<double>::Zero(cil.slices.size(), x_size));
26 double ext_abb,ext_bbb;
30 unsigned kbbb=floor(hbbb/res_vert_cil);
31 unsigned ktbb=ceil(htbb/res_vert_cil);
32 unsigned kmax=ceil(LIM_VERT/res_vert_cil);
35 if (t_ground < T_MAX_ML) kmax=0;
36 if (ktbb>z_size) ktbb=z_size;
37 LOG_DEBUG(
"kmax= %i \n kbbb= %i \n ktbb= %i \n z_size= %i",kmax,kbbb,ktbb,z_size);
40 for(
unsigned i=0; i<cil.slices.size(); i++){
41 for(
unsigned j=0; j<x_size; j++)
47 for(
unsigned k=0; k<kbbb; k++)
49 if (cil(i, j, k) > -19.){
50 base=(cil(i, j, k))/10.;
52 Zbbb(i, j) = Zbbb(i, j) + res_vert_cil*cil_Z;
53 ext_bbb=res_vert_cil+ext_bbb;
57 for(
unsigned k=kbbb; k<ktbb; k++)
60 if (cil(i, j, k)>10. && cil(i, j, k+4)> 5.){
61 if (cil(i, j, k) - cil(i, j, k+4) > 5.)
65 else if (cil(i, j, k)>10. && cil(i, j, k+4)> 5. && cil(i, j, k-4) > 5.){
66 if (cil(i, j, k) - cil(i, j, k+4) > 5.&& cil(i, j, k)- cil(i, j, k-4) > 5. )
71 if (cil(i, j, k) - cil(i, j, k+4) > 5.)
74 for(k=ktbb; k<z_size; k++)
76 if (cil(i, j, k) > -19.){
77 base=(cil(i, j, k))/10.;
79 Zabb(i, j) = Zabb(i, j) + res_vert_cil*cil_Z;
80 ext_abb=res_vert_cil+ext_abb;
87 if (ext_bbb + ext_abb>0.8) {
89 if ((Zabb(i, j) +Zbbb(i, j))/(ext_bbb+ext_abb) > THR_VIZ){
91 conv_VIZ(i, j)=CONV_VAL;
101 LOG_DEBUG(
"numero nuclei VIZ = %li",ncv);
Radar volume mapped to cylindrical coordinates.
Base for all matrices we use, since we rely on row-major data.