Elaboradar  0.1
 Tutto Classi Namespace File Funzioni Variabili Tipi enumerati (enum) Gruppi
RunCleanID.cpp
1 
2 #include <iostream>
3 #include <cstring>
4 #include <radarelab/volume.h>
5 #include <radarelab/odim.h>
6 #include <radarlib/radar.hpp>
7 #include <sstream>
8 #include <radarelab/image.h>
10 #include <radarelab/algo/cleaner.h>
11 
13 
14 using namespace radarelab;
15 using namespace std;
16 
17 using namespace volume;
18 namespace odim = OdimH5v21;
19 
20 int main(int argc,char* argv[])
21 {
22  if (argc < 2)
23  {
24  fprintf(stderr, "Usage: %s <h5-volume-input> <h5-volume-output> [--Use_undetect] \n", argv[0]);
25  exit(1);
26  }
27 
28  std::string pathname = argv[1];
29 
30  printf("il nome del mio file è %s\n", pathname.c_str());
31 
32  volume::ODIMLoader loader_all;
33 
34  volume::Scans<double> full_volume_z;
35  volume::Scans<double> full_volume_zdr;
36  volume::Scans<double> full_volume_vrad;
37  volume::Scans<double> full_volume_wrad;
38  volume::Scans<unsigned char> full_volume_cleanID;
39  std::string task;
40 
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);
45 
46  loader_all.load(argv[1]);
47  if ( !full_volume_wrad.empty() && !full_volume_vrad.empty())
48  {
49  if (full_volume_zdr.empty())
50  {
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);
55  task="Cleaner base";
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) {
60  // 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),
61  // full_volume_z.at(last).nodata, full_volume_z.at(last).gain, full_volume_z.at(last).offset);
62  if(full_volume_cleanID.at(i)(ii,ib) )
63  full_volume_z.at(i)(ii,ib)= new_value;
64  // printf(" %6.2f \n", full_volume_z.at(i)(ii,ib));
65  }
66  }
67  } else {
68  bool Undetect = false;
69  if (argc == 4 && ! sscanf(argv[3], " --Use_undetect") ) Undetect = true;
70 // printf(" flag settata a %d\n",Undetect);
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);
75  }
76  }
77  }
78 
79 
80  std::cout<<"Finito Cleaner, salvo risultati"<<std::endl;
81  volume::ODIMStorer storer;
82  storer.replace_quantity((Volume<double>*)(&full_volume_z));
83  storer.store_quantity_uchar((Volume<unsigned char>*)(&full_volume_cleanID));
84  storer.store(argv[2]);
85  cout<<endl<<"Fine"<<endl;
86 }
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:330