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 
56  loader_all.request_quantity(odim::PRODUCT_QUANTITY_DBZH,&full_volume_z);
57  loader_all.request_quantity(odim::PRODUCT_QUANTITY_ZDR,&full_volume_zdr);
58  loader_all.request_quantity(odim::PRODUCT_QUANTITY_VRAD,&full_volume_vrad);
59  loader_all.request_quantity(odim::PRODUCT_QUANTITY_WRAD,&full_volume_wrad);
60  loader_all.request_quantity(odim::PRODUCT_QUANTITY_SQI,&full_volume_sqi);
61 
62 
63 
64  loader_all.load(argv[1]);
65 
66 
67  for (unsigned i = 0; i < full_volume_z.size(); ++i){
68  volume::Scans<double> Input, Input_zdr, Texture;
69  Input.push_back(full_volume_z.at(i));
70 // Texture Z 2D
71  radarelab::volume::textureSD( Input, Texture, 1000. , 3.,false);
72  Texture.at(0).nodata=65535.;
73  Texture.at(0).undetect=0.;
74  Z_SD2D.push_back(Texture.at(0));
75 // Texture Z 1D Ray 9 bins
76  radarelab::volume::textureSD( Input,Texture, Input.at(0).cell_size*9 , 360./Input.at(0).beam_count,true);
77  Texture.at(0).nodata=65535.;
78  Texture.at(0).undetect=0.;
79  Z_SDRay_9.push_back(Texture.at(0));
80 // Texture Z 1D Ray 21 bins
81  radarelab::volume::textureSD( Input,Texture, Input.at(0).cell_size*21 , 360./Input.at(0).beam_count,true);
82  Texture.at(0).nodata=65535.;
83  Texture.at(0).undetect=0.;
84  Z_SDRay_21.push_back(Texture.at(0));
85 // Texture Z 1D Az 5 rays
86  radarelab::volume::textureSD( Input,Texture, Input.at(0).cell_size , 5*360./Input.at(0).beam_count,true);
87  Texture.at(0).nodata=65535.;
88  Texture.at(0).undetect=0.;
89  Z_SDAz.push_back(Texture.at(0));
90 // Texture ZDR 2D
91  Input_zdr.push_back(full_volume_zdr.at(i));
92  radarelab::volume::textureSD( Input_zdr, Texture, 1000. , 3.,false);
93  Texture.at(0).nodata=65535.;
94  Texture.at(0).undetect=0.;
95  ZDR_SD2D.push_back(Texture.at(0));
96  // Z_VD
97  if(i<full_volume_z.size()-1){
98  //radarelab::PolarScan<double> Z_VDi(full_volume_z.at(i));
99 
100  //PolarScan<double> Z_VDi(full_volume_z.at(i)); //.beam_count, full_volume_z.at(i).beam_size, full_volume_z.at(i).undetect);
101  //cout<<"z undetect, gain="<<full_volume_z.at(i).undetect<<", "<<full_volume_z.at(i).gain<<endl;
102  //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;
103  //radarelab::volume::textureVD(full_volume_z.at(i), full_volume_z.at(i+1), Z_VDi, true);
104  volume::Scans<double> Input2;
105  Input2.push_back(full_volume_z.at(i+1));
106  radarelab::volume::textureVD(Input, Input2, Texture, true);
107  Texture.at(0).nodata=65535.;
108  Texture.at(0).undetect=0.;
109  Z_VD.push_back(Texture.at(0));
110  cout<<"Z_VD.size="<<Z_VD.size()<<endl;
111  }
112  }
113  std::cout<<"Finito Cleaner, salvo risultati"<<std::endl;
114  volume::ODIMStorer storer;
115  storer.store_quantity_fp((Volume<double>*)(&Z_SD2D));
116  storer.store_quantity_fp((Volume<double>*)(&Z_SDRay_9));
117  storer.store_quantity_fp((Volume<double>*)(&Z_SDRay_21));
118  storer.store_quantity_fp((Volume<double>*)(&Z_SDAz));
119  storer.store_quantity_fp((Volume<double>*)(&ZDR_SD2D));
120  storer.store_quantity_fp((Volume<double>*)(&Z_VD));
121  storer.store(argv[1]);
122  cout<<endl<<"Fine"<<endl;
123 
124  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;
125 }
126 
127 
128 //
129 // radarelab::volume::Scans<double> Z_S, SD2D,SD_Ray,SD_Az;
130 // Z_S.push_back(scan_z);
131 // radarelab::volume::textureSD( Z_S,SD2D, 1000. , 3,false);
132 
133 // radarelab::volume::textureSD( Z_S,SD_Ray, scan_z.cell_size*9 , 360./scan_z.beam_count,true);
134 // radarelab::volume::textureSD( Z_S,SD_Az, scan_z.cell_size , 5*360./scan_z.beam_count,true);
135 //
std::string quantity
Odim quantity name.
Definition: volume.h:266
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.