Elaboradar  0.1
 Tutto Classi Namespace File Funzioni Variabili Tipi enumerati (enum) Gruppi
AddCleanerQuantities.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 < 1)
23  {
24  fprintf(stderr, "Usage: %s <h5-volume-input> [--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<double> full_volume_sqi;
39  volume::Scans<unsigned char> full_volume_cleanID;
40 
41  volume::Scans<double> Z_SD2D;
42  Z_SD2D.quantity="DBZH_SD2D";
43  volume::Scans<double> Z_SDRay_9;
44  Z_SDRay_9.quantity="DBZH_SDRay_9";
45  volume::Scans<double> Z_SDRay_21;
46  Z_SDRay_21.quantity="DBZH_SDRay_21";
47  volume::Scans<double> Z_SDAz;
48  Z_SDAz.quantity="DBZH_SDAz";
49  volume::Scans<double> ZDR_SD2D;
50  ZDR_SD2D.quantity="ZDR_SD2D";
51 
52  std::string task;
53 
54  loader_all.request_quantity(odim::PRODUCT_QUANTITY_DBZH,&full_volume_z);
55  loader_all.request_quantity(odim::PRODUCT_QUANTITY_ZDR,&full_volume_zdr);
56  loader_all.request_quantity(odim::PRODUCT_QUANTITY_VRAD,&full_volume_vrad);
57  loader_all.request_quantity(odim::PRODUCT_QUANTITY_WRAD,&full_volume_wrad);
58  loader_all.request_quantity(odim::PRODUCT_QUANTITY_SQI,&full_volume_sqi);
59 
60 
61 
62  loader_all.load(argv[1]);
63 
64 
65  for (unsigned i = 0; i < full_volume_z.size(); ++i){
66  volume::Scans<double> Input, Input_zdr, Texture;
67  Input.push_back(full_volume_z.at(i));
68 // Texture Z 2D
69  radarelab::volume::textureSD( Input, Texture, 1000. , 3.,false);
70  Texture.at(0).nodata=65535.;
71  Texture.at(0).undetect=0.;
72  Z_SD2D.push_back(Texture.at(0));
73 // Texture Z 1D Ray 9 bins
74  radarelab::volume::textureSD( Input,Texture, Input.at(0).cell_size*9 , 360./Input.at(0).beam_count,true);
75  Texture.at(0).nodata=65535.;
76  Texture.at(0).undetect=0.;
77  Z_SDRay_9.push_back(Texture.at(0));
78 // Texture Z 1D Ray 21 bins
79  radarelab::volume::textureSD( Input,Texture, Input.at(0).cell_size*21 , 360./Input.at(0).beam_count,true);
80  Texture.at(0).nodata=65535.;
81  Texture.at(0).undetect=0.;
82  Z_SDRay_21.push_back(Texture.at(0));
83 // Texture Z 1D Az 5 rays
84  radarelab::volume::textureSD( Input,Texture, Input.at(0).cell_size , 5*360./Input.at(0).beam_count,true);
85  Texture.at(0).nodata=65535.;
86  Texture.at(0).undetect=0.;
87  Z_SDAz.push_back(Texture.at(0));
88 // Texture ZDR 2D
89  Input_zdr.push_back(full_volume_zdr.at(i));
90  radarelab::volume::textureSD( Input_zdr, Texture, 1000. , 3.,false);
91  Texture.at(0).nodata=65535.;
92  Texture.at(0).undetect=0.;
93  ZDR_SD2D.push_back(Texture.at(0));
94  }
95  std::cout<<"Finito Cleaner, salvo risultati"<<std::endl;
96  volume::ODIMStorer storer;
97  storer.store_quantity_fp((Volume<double>*)(&Z_SD2D));
98  storer.store_quantity_fp((Volume<double>*)(&Z_SDRay_9));
99  storer.store_quantity_fp((Volume<double>*)(&Z_SDRay_21));
100  storer.store_quantity_fp((Volume<double>*)(&Z_SDAz));
101  storer.store_quantity_fp((Volume<double>*)(&ZDR_SD2D));
102  storer.store(argv[1]);
103  cout<<endl<<"Fine"<<endl;
104 }
105 
106 
107 //
108 // radarelab::volume::Scans<double> Z_S, SD2D,SD_Ray,SD_Az;
109 // Z_S.push_back(scan_z);
110 // radarelab::volume::textureSD( Z_S,SD2D, 1000. , 3,false);
111 
112 // radarelab::volume::textureSD( Z_S,SD_Ray, scan_z.cell_size*9 , 360./scan_z.beam_count,true);
113 // radarelab::volume::textureSD( Z_S,SD_Az, scan_z.cell_size , 5*360./scan_z.beam_count,true);
114 //
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.
std::string quantity
Odim quantity name.
Definition: volume.h:266