Elaboradar  0.1
 Tutto Classi Namespace File Funzioni Variabili Tipi enumerati (enum) Gruppi
RunCleanID.cpp
1 
2 #include <iostream>
3 #include <radarelab/volume.h>
4 #include <radarelab/odim.h>
5 #include <radarlib/radar.hpp>
6 #include <sstream>
7 #include <radarelab/image.h>
10 
12 
13 using namespace radarelab;
14 using namespace std;
15 
16 using namespace volume;
17 namespace odim = OdimH5v21;
18 
19 int main(int argc,char* argv[])
20 {
21  std::string pathname = argv[1];
22 
23  printf("il nome del mio file è %s\n", pathname.c_str());
24 
25  volume::ODIMLoader loader_all;
26 
27  volume::Scans<double> full_volume_z;
28  volume::Scans<double> full_volume_zdr;
29  volume::Scans<double> full_volume_vrad;
30  volume::Scans<double> full_volume_wrad;
31  volume::Scans<unsigned char> full_volume_cleanID;
32  std::string task;
33 
34  loader_all.request_quantity(odim::PRODUCT_QUANTITY_DBZH,&full_volume_z);
35  loader_all.request_quantity(odim::PRODUCT_QUANTITY_ZDR,&full_volume_zdr);
36  loader_all.request_quantity(odim::PRODUCT_QUANTITY_VRAD,&full_volume_vrad);
37  loader_all.request_quantity(odim::PRODUCT_QUANTITY_WRAD,&full_volume_wrad);
38 
39  loader_all.load(argv[1]);
40  if ( !full_volume_wrad.empty() && !full_volume_vrad.empty())
41  {
42  if (full_volume_zdr.empty())
43  {
44  unsigned last = full_volume_z.size() -1;
45  for (unsigned i = 0; i < full_volume_z.size(); ++i){
46  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);
47  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);
48  task="Cleaner base";
49  for (unsigned ii = 0; ii < full_volume_z.at(i).beam_count; ++ii)
50  for (unsigned ib = 0; ib < full_volume_z.at(i).beam_size; ++ib) {
51  printf(" %4d %4d %4d %4d %5.2f %5.2f %5.2f %5.2f ---> ", i,ii,ib, full_volume_cleanID.at(i)(ii,ib), full_volume_z.at(i)(ii,ib),
52  full_volume_z.at(last).nodata, full_volume_z.at(last).gain, full_volume_z.at(last).offset);
53  if(full_volume_cleanID.at(i)(ii,ib))
54  full_volume_z.at(i)(ii,ib)=full_volume_z.at(last).nodata;
55  printf(" %6.2f \n", full_volume_z.at(i)(ii,ib));
56  }
57  }
58  } else {
59  for (unsigned i = 0; i < full_volume_z.size(); ++i){
60  algo::Cleaner::clean(full_volume_z.at(i), full_volume_wrad.at(i), full_volume_vrad.at(i),full_volume_zdr.at(i),i,true);
61  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,true);
62  }
63  }
64  }
65 
66 
67  std::cout<<"Finito Cleaner, salvo risultati"<<std::endl;
68  volume::ODIMStorer storer;
69  storer.replace_quantity((Volume<double>*)(&full_volume_z));
70 // storer.store_quantity_uchar((Volume<unsigned char>*)(&full_volume_cleanID));
71  storer.store(argv[2]);
72  cout<<endl<<"Fine"<<endl;
73 }
Codice per il caricamento di volumi ODIM in radarelab.
Struttura che eredita da Loader e definisce i metodi per accedere ai dati ODIM.
Definition: odim.h:22
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&#39;oggetto cleaner, lo inizializza, pulisce i dati e modifica il PolarScan di DBZH...
Definition: cleaner.cpp:641
PolarScan< T > & append_scan(unsigned beam_count, unsigned beam_size, double elevation, double cell_size)
Append a scan to this volume.
Definition: volume.h:317