Elaboradar  0.1
 Tutto Classi Namespace File Funzioni Variabili Tipi enumerati (enum) Gruppi
stat_CleanID.cpp
1 
2 #include <iostream>
3 #include <radarelab/volume.h>
4 #include <radarelab/odim.h>
5 #include <radarlib/radar.hpp>
6 #include <sstream>
7 #include <radarelab/image.h>
10 
12 
13 using namespace radarelab;
14 using namespace std;
15 
16 using namespace volume;
17 namespace odim = OdimH5v21;
18 
19 int main(int argc,char* argv[])
20 {
21  std::string pathname = argv[1];
22 
23 // printf("il nome del mio file è %s\n", pathname.c_str());
24 
25  volume::ODIMLoader loader_all;
26 
27  volume::Scans<double> full_volume_z;
28  volume::Scans<double> full_volume_zdr;
29  volume::Scans<double> full_volume_vrad;
30  volume::Scans<double> full_volume_wrad;
31  volume::Scans<unsigned char> full_volume_cleanID;
32  std::string task;
33 
34  loader_all.request_quantity(odim::PRODUCT_QUANTITY_DBZH,&full_volume_z);
35  loader_all.request_quantity(odim::PRODUCT_QUANTITY_ZDR,&full_volume_zdr);
36  loader_all.request_quantity(odim::PRODUCT_QUANTITY_VRAD,&full_volume_vrad);
37  loader_all.request_quantity(odim::PRODUCT_QUANTITY_WRAD,&full_volume_wrad);
38 
39  loader_all.load(argv[1]);
40 
41  if ( !full_volume_wrad.empty() && !full_volume_vrad.empty())
42  {
43  if (full_volume_zdr.empty())
44  {
45 //printf("Chiamo cleaner senza zdr\n");
46  //for (unsigned i = 0; i < 1; ++i){
47  for (unsigned i = 0; i < full_volume_z.size(); ++i){
48  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);
49  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);
50  task="Cleaner base";
51  }
52  } else {
53 printf("Chiamo cleaner con zdr\n");
54  for (unsigned i = 0; i < full_volume_z.size(); ++i){
55  algo::Cleaner::clean(full_volume_z.at(i), full_volume_wrad.at(i), full_volume_vrad.at(i),full_volume_zdr.at(i),i);
56  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);
57  }
58  }
59  }
60  vector <std::string> Sweep(full_volume_cleanID.at(0).beam_count, "" );
61  std::string my_time; // formato "YYYY-MM-DD hh:mm:s
62  my_time = Radar::timeutils::absoluteToString(full_volume_z.load_info->acq_date);
63  for (unsigned iel = 0; iel< full_volume_cleanID.size(); iel++){
64  //VectorXd conteggi ;
65  auto Weather = (full_volume_cleanID.at(iel).array() == 0 && full_volume_z.at(iel).array() >= -30.).rowwise().count() ;
66  auto Clutter = (full_volume_cleanID.at(iel).array() == 1 ).rowwise().count() ;
67  auto Interf = (full_volume_cleanID.at(iel).array() >= 2 && full_volume_cleanID.at(iel).array() <= 4 ).rowwise().count() ;
68  auto Noise = (full_volume_cleanID.at(iel).array() == 5 ).rowwise().count() ;
69  for (unsigned iray=0; iray < full_volume_cleanID.at(iel).beam_count; iray ++){
70  char Ray[50];
71  sprintf(Ray,", %5.1f, %5d, %5d, %5d, %5d",full_volume_z.at(iel).elevation, Weather(iray), Clutter(iray), Interf(iray), Noise(iray));
72  Sweep[iray] += Ray;
73 // printf("%s,%5.1f,%6.1f, %5d, %5d, %5d, %5d\n",my_time.c_str(), full_volume_z.at(iel).elevation, full_volume_z.at(iel).azimuths_real(iray),
74 // Weather(iray), Clutter(iray), Interf(iray), Noise(iray));
75  }
76  }
77  printf("DateTime, Azimuth, Elev_01, Weather_E01,Clutter_E01, Iterf_E01,Noise_E01, Elev_02, Weather_E02,Clutter_E02, Iterf_E02,Noise_E02, Elev_03, Weather_E03,Clutter_E03, Iterf_E03,Noise_E03, Elev_04, Weather_E04,Clutter_E04, Iterf_E04,Noise_E04, Elev_05, Weather_E05,Clutter_E05, Iterf_E05,Noise_E05, Elev_06, Weather_E06,Clutter_E06, Iterf_E06,Noise_E06\n");
78  for (unsigned iray=0; iray < Sweep.size(); iray ++){
79  printf("%s,%6.1f %s\n",my_time.c_str(), full_volume_z.at(0).azimuths_real(iray),Sweep[iray].c_str());
80  }
81 }
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::shared_ptr< LoadInfo > load_info
Polar volume information.
Definition: volume.h:270
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:317
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