Elaboradar 0.1
Caricamento in corso...
Ricerca in corso...
Nessun risultato
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>
11
13
14using namespace radarelab;
15using namespace std;
16
17using namespace volume;
18namespace odim = OdimH5v21;
19
20int 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
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";
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//
Homogeneous volume with a common beam count for all PolarScans.
Definition volume.h:431
std::string quantity
Odim quantity name.
Definition volume.h:268
Sequence of PolarScans which can have a different beam count for each elevation.
Definition volume.h:264
Namespace per volume dati.
Definition elev_fin.h:12
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.