5 #ifndef RADARELAB_ALGO_ANAPROP_H
6 #define RADARELAB_ALGO_ANAPROP_H
19 const unsigned step_stat_az = 25;
21 const unsigned step_stat_range = 40;
26 unsigned size_beam = 0;
29 unsigned* stat_anap = 0;
31 unsigned* stat_tot = 0;
33 unsigned* stat_bloc = 0;
35 unsigned* stat_elev = 0;
40 void init(
const Volume<double>& volume);
42 inline unsigned idx(
unsigned az,
unsigned beam)
const
44 return az / step_stat_az * size_beam + beam / step_stat_range;
47 void incr_anap(
unsigned az,
unsigned beam) { stat_anap[idx(az, beam)]++; }
48 void incr_tot(
unsigned az,
unsigned beam) { stat_tot[idx(az, beam)]++; }
49 void incr_elev(
unsigned az,
unsigned beam) { stat_elev[idx(az, beam)]++; }
50 void incr_bloc(
unsigned az,
unsigned beam,
unsigned amount) { stat_bloc[idx(az, beam)]++; }
52 unsigned count(
unsigned az,
unsigned beam)
const
54 return stat_tot[idx(az, beam)];
57 unsigned char perc_anap(
unsigned az,
unsigned beam)
const
59 return stat_anap[idx(az, beam)] * 100 / stat_tot[idx(az, beam)];
62 unsigned char perc_elev(
unsigned az,
unsigned beam)
const
64 return stat_elev[idx(az, beam)] * 100 / stat_tot[idx(az, beam)];
67 unsigned char perc_bloc(
unsigned az,
unsigned beam)
const
69 return stat_bloc[idx(az, beam)] * 100 / stat_tot[idx(az, beam)];
74 static const int ANAP_OK = 0;
75 static const int ANAP_YES = 1;
76 static const int ANAP_NODAT = 2;
77 static const int ANAP_NOCONTROL = 3;
83 log4c_category_t* logging_category;
91 double conf_texture_threshold = 3;
92 bool do_quality =
false;
93 bool do_beamblocking =
false;
94 bool do_bloccorr =
false;
99 anaprop::GridStats grid_stats;
100 volume::ElevFin<T> elev_fin;
101 PolarScan<unsigned char> dato_corrotto;
102 PolarScan<unsigned short> quota;
104 Anaprop(
const Volume<T>& volume);
107 void init_elev_fin_static(
const Volume<T>& volume,
const PolarScan<unsigned char>& first_level_static);
112 PolarScan<unsigned char>& beam_blocking,
113 const PolarScan<unsigned char>& first_level,
114 const PolarScan<unsigned char>& first_level_static,
115 const Volume<double>& sd);
118 void remove_without_SD(
120 PolarScan<unsigned char>& beam_blocking,
121 const PolarScan<unsigned char>& first_level,
122 const PolarScan<unsigned char>& first_level_static,
123 const Volume<double>& sd);
Definisce le principali strutture che contengono i dati.