Elaboradar  0.1
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";
52  Z_VD.quantity="Z_VD";
53 
54  std::string task;
55  bool is_zdr=false;
56 
57  loader_all.request_quantity(odim::PRODUCT_QUANTITY_DBZH,&full_volume_z);
58  loader_all.request_quantity(odim::PRODUCT_QUANTITY_ZDR,&full_volume_zdr);
59  loader_all.request_quantity(odim::PRODUCT_QUANTITY_VRAD,&full_volume_vrad);
60  loader_all.request_quantity(odim::PRODUCT_QUANTITY_WRAD,&full_volume_wrad);
61  loader_all.request_quantity(odim::PRODUCT_QUANTITY_SQI,&full_volume_sqi);
62 
63 
64 
65  loader_all.load(argv[1]);
66 
67 
68  for (unsigned i = 0; i < full_volume_z.size(); ++i){
69  volume::Scans<double> Input, Input_zdr, Texture;
70  Input.push_back(full_volume_z.at(i));
71 // Texture Z 2D
72  radarelab::volume::textureSD( Input, Texture, 1000. , 3.,false);
73  Texture.at(0).nodata=65535.;
74  Texture.at(0).undetect=0.;
75  Z_SD2D.push_back(Texture.at(0));
76 // Texture Z 1D Ray 9 bins
77  radarelab::volume::textureSD( Input,Texture, Input.at(0).cell_size*9 , 360./Input.at(0).beam_count,true);
78  Texture.at(0).nodata=65535.;
79  Texture.at(0).undetect=0.;
80  Z_SDRay_9.push_back(Texture.at(0));
81 // Texture Z 1D Ray 21 bins
82  radarelab::volume::textureSD( Input,Texture, Input.at(0).cell_size*21 , 360./Input.at(0).beam_count,true);
83  Texture.at(0).nodata=65535.;
84  Texture.at(0).undetect=0.;
85  Z_SDRay_21.push_back(Texture.at(0));
86 // Texture Z 1D Az 5 rays
87  radarelab::volume::textureSD( Input,Texture, Input.at(0).cell_size , 5*360./Input.at(0).beam_count,true);
88  Texture.at(0).nodata=65535.;
89  Texture.at(0).undetect=0.;
90  Z_SDAz.push_back(Texture.at(0));
91 // Texture ZDR 2D
92  if( ! full_volume_zdr.empty()){
93  Input_zdr.push_back(full_volume_zdr.at(i));
94  radarelab::volume::textureSD( Input_zdr, Texture, 1000. , 3.,false);
95  Texture.at(0).nodata=65535.;
96  Texture.at(0).undetect=0.;
97  ZDR_SD2D.push_back(Texture.at(0));
98 
99  is_zdr=true;
100  }
101  // Z_VD
102  if(i<full_volume_z.size()-1){
103  //radarelab::PolarScan<double> Z_VDi(full_volume_z.at(i));
104 
105  //PolarScan<double> Z_VDi(full_volume_z.at(i)); //.beam_count, full_volume_z.at(i).beam_size, full_volume_z.at(i).undetect);
106  //cout<<"z undetect, gain="<<full_volume_z.at(i).undetect<<", "<<full_volume_z.at(i).gain<<endl;
107  //cout<<"beam_count, beam_size, nodata, undetect,gain for Z_VDi= "<<Z_VDi.beam_count<<", "<<Z_VDi.beam_size<<", "<<Z_VDi.nodata<<", "<<Z_VDi.undetect<<", "<<Z_VDi.gain<<endl;
108  //radarelab::volume::textureVD(full_volume_z.at(i), full_volume_z.at(i+1), Z_VDi, true);
109  volume::Scans<double> Input2;
110  Input2.push_back(full_volume_z.at(i+1));
111  radarelab::volume::textureVD(Input, Input2, Texture, true);
112  Texture.at(0).nodata=65535.;
113  Texture.at(0).undetect=0.;
114  Z_VD.push_back(Texture.at(0));
115  cout<<"Z_VD.size="<<Z_VD.size()<<endl;
116  }
117  }
118  std::cout<<"Finito Cleaner, salvo risultati"<<std::endl;
119  volume::ODIMStorer storer;
120  storer.store_quantity_fp((Volume<double>*)(&Z_SD2D));
121  storer.store_quantity_fp((Volume<double>*)(&Z_SDRay_9));
122  storer.store_quantity_fp((Volume<double>*)(&Z_SDRay_21));
123  storer.store_quantity_fp((Volume<double>*)(&Z_SDAz));
124  if( is_zdr ) storer.store_quantity_fp((Volume<double>*)(&ZDR_SD2D));
125  storer.store_quantity_fp((Volume<double>*)(&Z_VD));
126  storer.store(argv[1]);
127  cout<<endl<<"Fine"<<endl;
128 
129  //cout<<"vol00 = "<<Z_VD.at(5)(30,40)<<" da raw2="<<full_volume_z.at(5)(30,40)<<" - raw1"<<full_volume_z.at(5)(30,40)<<endl;
130 }
131 
132 
133 //
134 // radarelab::volume::Scans<double> Z_S, SD2D,SD_Ray,SD_Az;
135 // Z_S.push_back(scan_z);
136 // radarelab::volume::textureSD( Z_S,SD2D, 1000. , 3,false);
137 
138 // radarelab::volume::textureSD( Z_S,SD_Ray, scan_z.cell_size*9 , 360./scan_z.beam_count,true);
139 // radarelab::volume::textureSD( Z_S,SD_Az, scan_z.cell_size , 5*360./scan_z.beam_count,true);
140 //
std::string quantity
Odim quantity name.
Definition: volume.h:268
String functions.
Definition: cart.cpp:4
Codice per il caricamento di volumi ODIM in radarelab.
void request_quantity(const std::string &name, Scans< double > *volume)
Define a request - Fill to_load attribute
Definition: odim.cpp:29
void load(const std::string &pathname)
Load method.
Definition: odim.cpp:34
Struttura che eredita da Loader e definisce i metodi per accedere ai dati ODIM.
Definition: odim.h:23
Definisce le principali strutture che contengono i dati.