6 #include <radarlib/radar.hpp>
14 using namespace radarelab;
17 using namespace volume;
18 namespace odim = OdimH5v21;
20 int main(
int argc,
char* argv[])
24 fprintf(stderr,
"Usage: %s <h5-volume-input> <h5-volume-output> [--Use_undetect] \n", argv[0]);
28 std::string pathname = argv[1];
30 printf(
"il nome del mio file è %s\n", pathname.c_str());
41 loader_all.request_quantity(odim::PRODUCT_QUANTITY_DBZH,&full_volume_z);
42 loader_all.request_quantity(odim::PRODUCT_QUANTITY_ZDR,&full_volume_zdr);
43 loader_all.request_quantity(odim::PRODUCT_QUANTITY_VRAD,&full_volume_vrad);
44 loader_all.request_quantity(odim::PRODUCT_QUANTITY_WRAD,&full_volume_wrad);
46 loader_all.load(argv[1]);
47 if ( !full_volume_wrad.empty() && !full_volume_vrad.empty())
49 if (full_volume_zdr.empty())
51 unsigned last = full_volume_z.size() -1;
52 for (
unsigned i = 0; i < full_volume_z.size(); ++i){
53 full_volume_cleanID.
append_scan(full_volume_z.at(i).beam_count,full_volume_z.at(i).beam_size,full_volume_z.at(i).elevation, full_volume_z.at(i).cell_size);
54 radarelab::algo::Cleaner::evaluateCleanID(full_volume_z.at(i), full_volume_wrad.at(i), full_volume_vrad.at(i),full_volume_cleanID.at(i),i);
56 double new_value=full_volume_z.at(last).nodata;
57 if (argc == 4 && ! sscanf(argv[3],
" --Use_undetect") ) new_value=full_volume_z.at(last).undetect;
58 for (
unsigned ii = 0; ii < full_volume_z.at(i).beam_count; ++ii)
59 for (
unsigned ib = 0; ib < full_volume_z.at(i).beam_size; ++ib) {
62 if(full_volume_cleanID.at(i)(ii,ib) )
63 full_volume_z.at(i)(ii,ib)= new_value;
68 bool Undetect =
false;
69 if (argc == 4 && ! sscanf(argv[3],
" --Use_undetect") ) Undetect =
true;
71 for (
unsigned i = 0; i < full_volume_z.size(); ++i){
72 cout<<
"elevazione :"<<i<<endl;
73 algo::Cleaner::clean(full_volume_z.at(i), full_volume_wrad.at(i), full_volume_vrad.at(i),full_volume_zdr.at(i),i,Undetect);
74 algo::Cleaner::clean(full_volume_z.at(i), full_volume_wrad.at(i), full_volume_vrad.at(i),full_volume_zdr.at(i),i+100,Undetect);
80 std::cout<<
"Finito Cleaner, salvo risultati"<<std::endl;
81 volume::ODIMStorer storer;
84 storer.store(argv[2]);
85 cout<<endl<<
"Fine"<<endl;
Codice per il caricamento di volumi ODIM in radarelab.
Struttura che eredita da Loader e definisce i metodi per accedere ai dati ODIM.
Definisce le principali strutture che contengono i dati.
static void clean(PolarScan< double > &scan_Z, PolarScan< double > &scan_W, PolarScan< double > &scan_V, unsigned iel=0, bool set_undetect=false)
Funzione che crea l'oggetto cleaner, lo inizializza, pulisce i dati e modifica il PolarScan di DBZH...
PolarScan< T > & append_scan(unsigned beam_count, unsigned beam_size, double elevation, double cell_size)
Append a scan to this volume.