5 #include <radarlib/radar.hpp>
13 using namespace radarelab;
16 using namespace volume;
17 namespace odim = OdimH5v21;
19 int main(
int argc,
char* argv[])
21 std::string pathname = argv[1];
39 loader_all.
load(argv[1]);
41 if ( !full_volume_wrad.empty() && !full_volume_vrad.empty())
43 if (full_volume_zdr.empty())
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);
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);
60 vector <std::string> Sweep(full_volume_cleanID.at(0).beam_count,
"" );
62 my_time = Radar::timeutils::absoluteToString(full_volume_z.
load_info->acq_date);
63 for (
unsigned iel = 0; iel< full_volume_cleanID.size(); iel++){
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 ++){
71 sprintf(Ray,
", %5.1f, %5d, %5d, %5d, %5d",full_volume_z.at(iel).elevation, Weather(iray), Clutter(iray), Interf(iray), Noise(iray));
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());
Codice per il caricamento di volumi ODIM in radarelab.
Struttura che eredita da Loader e definisce i metodi per accedere ai dati ODIM.
Definisce le principali strutture che contengono i dati.
std::shared_ptr< LoadInfo > load_info
Polar volume information.
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'oggetto cleaner, lo inizializza, pulisce i dati e modifica il PolarScan di DBZH...
PolarScan< T > & append_scan(unsigned beam_count, unsigned beam_size, double elevation, double cell_size)
Append a scan to this volume.
void request_quantity(const std::string &name, Scans< double > *volume)
Define a request - Fill to_load attribute.
void load(const std::string &pathname)
Load method.