Elaboradar 0.1
Caricamento in corso...
Ricerca in corso...
Nessun risultato
viz.cpp
3#include <radarelab/vpr_par.h>
5
6#define MISSING 0 /*valore mancante*/
7
8using namespace std;
9
10namespace radarelab {
11namespace algo {
12
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))
17{
18 logging_category = log4c_category_get("radar.vpr");
19}
20
21void CalcoloVIZ::classifico_VIZ()
22{
23 float cil_Z,base;
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;
27 float LIM_VERT= 8.;//questo l'ho messo io
28 long int ncv = 0;
29
30 unsigned kbbb=floor(hbbb/res_vert_cil); //08/01/2013...MODIFICA, inserito questo dato
31 unsigned ktbb=ceil(htbb/res_vert_cil);
32 unsigned kmax=ceil(LIM_VERT/res_vert_cil);
33 // kmax=ceil(z_size/res_vert_cil);
34
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);
38
39 //inizio l'integrazione
40 for(unsigned i=0; i<cil.slices.size(); i++){
41 for(unsigned j=0; j<x_size; j++)
42 {
43 ext_abb=0.;
44 ext_bbb=0.;
45
46 //modifica 08/01/2013 .. afggiungo questo ..per fare l'integrazione anche con i dati sotto la bright band
47 for(unsigned k=0; k<kbbb; k++)
48 {
49 if (cil(i, j, k) > -19.){ // 08/01/2013..modifica, prendo fin dove ho un segnale
50 base=(cil(i, j, k))/10.;
51 cil_Z=pow(10.,base);
52 Zbbb(i, j) = Zbbb(i, j) + res_vert_cil*cil_Z;
53 ext_bbb=res_vert_cil+ext_bbb;
54 }
55 }
56//std::cout<<"Z_size :"<<z_size<<" kbbb :"<<kbbb<<" ktbb "<<ktbb<<std::endl;
57 for(unsigned k=kbbb; k<ktbb; k++)
58 {
59 if (k < 4 ){
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.)
62 stratiform(i, j)=1;
63 }
64 }
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. )
67 stratiform(i, j)=1;
68
69 }
70
71 if (cil(i, j, k) - cil(i, j, k+4) > 5.)
72 stratiform(i, j)=1;
73
74 for(k=ktbb; k<z_size; k++)
75 {
76 if (cil(i, j, k) > -19.){ // 08/01/2013..modifica, prendo fin dove ho un segnale
77 base=(cil(i, j, k))/10.;
78 cil_Z=pow(10.,base);
79 Zabb(i, j) = Zabb(i, j) + res_vert_cil*cil_Z;
80 ext_abb=res_vert_cil+ext_abb;
81 }
82 }
83
84
85 //solo se l'estensione verticale del segnale sopra il top della bright band è maggiore di 0.8 Km classifico
86
87 if (ext_bbb + ext_abb>0.8) {
88 //if ( ext_abb>0.8) {
89 if ((Zabb(i, j) +Zbbb(i, j))/(ext_bbb+ext_abb) > THR_VIZ){
90 //if ((Zabb(i, j) /ext_abb) > THR_VIZ){
91 conv_VIZ(i, j)=CONV_VAL;
92 //lista_conv[ncv][0]= i;
93 //lista_conv[ncv][1]= j;
94 ncv=ncv+1;
95 }
96 }
97
98 }
99 }
100 }
101 LOG_DEBUG("numero nuclei VIZ = %li",ncv);
102
103 return;
104}
105
106}
107}
String functions.
Definition cart.cpp:4