#include <iostream>
void dump_rays(
const char* quantityName,
PolarScan* scan,
const std::vector<int> raysindex)
{
cout << "Dumping " << quantityName << " values..." << endl;
std::cout << "prec: " << atom.getPrecision() << std::endl;
std::cout << "order: " << atom.getOrder() << std::endl;
std::cout << "size: " << atom.getSize() << std::endl;
for (size_t i=0; i<raysindex.size(); i++)
{
int ray = raysindex[i];
cout << "Raggio n. " << ray << ": ";
for (int b=0; b<bins; b++)
cout << matrix.
elem(ray, b) <<
" ";
cout << endl;
}
cout << endl;
delete data;
}
template <class T> static void writeVector(const std::vector<T>& v)
{
for (size_t i=0; i<v.size(); i++)
std::cout << v[i] << " ";
}
int main(int argc, char* argv[])
{
if (argc != 2)
{
cout << "Usage: " << argv[0] << " <odimh5file>" << endl;
return -1;
}
try
{
cout << "WHAT:" << endl;
cout <<
" - Object: " << volume->
getObject() << endl;
cout <<
" - Version: " << volume->
getVersion() << endl;
cout <<
" - Date/Time: " << volume->
getDateTime() << endl;
cout <<
" - Date/Time str: " << timeutils::absoluteToString(volume->
getDateTime()) << endl;
cout << "WHERE:" << endl;
cout <<
" - Latitude: " << volume->
getLatitude() << endl;
cout <<
" - Longitude: " << volume->
getLongitude() << endl;
cout <<
" - Altitude: " << volume->
getAltitude() << endl;
cout << "HOW:" << endl;
cout <<
" - End epochs: " << volume->
getEndEpochs() << endl;
cout <<
" - System: " << volume->
getSystem() << endl;
cout <<
" - Software: " << volume->
getSoftware() << endl;
cout <<
" - ZR_A: " << volume->
getZR_A() << endl;
cout <<
" - ZR_B: " << volume->
getZR_B() << endl;
cout <<
" - KR_A: " << volume->
getKR_A() << endl;
cout <<
" - KR_B: " << volume->
getKR_B() << endl;
cout << "Numero scansioni: " << numElevazioni << endl;
cout << "angoli scansioni: "; writeVector(scanAngles); cout << endl;
cout << "angoli elevazioni (duplicati esclusi): "; writeVector(elevationAngles); cout << endl;
for (int i=1; i<=numElevazioni; i++)
{
cout << "Scansione n. "<<i<<" (elevazione: " << elevation << ")" << endl;
cout << "Raggi: " << numRaggi << endl;
std::vector<int> raggiDaGuardare;
if (angles.size())
{
for (int r=0; r<numRaggi; r++)
if ((angles[r].start >= 15.) && (angles[r].stop < 45.))
raggiDaGuardare.push_back(r);
}
else
{
double step = 360. / numRaggi;
double startangle = 0;
for (int i=0; i<numRaggi; i++)
{
if (startangle >= 15. && startangle < 45.)
raggiDaGuardare.push_back(i);
startangle += step;
}
}
dump_rays(PRODUCT_QUANTITY_WRAD, scan, raggiDaGuardare);
dump_rays(PRODUCT_QUANTITY_VRAD, scan, raggiDaGuardare);
dump_rays(PRODUCT_QUANTITY_DBZH, scan, raggiDaGuardare);
dump_rays(PRODUCT_QUANTITY_TH, scan, raggiDaGuardare);
delete scan;
}
cout << "Lettura eseguita!" << endl;
}
catch (std::exception& stde)
{
cerr << "Errore di esecuzione: " << stde.what() << endl;
}
catch (...)
{
cerr << "Errore di esecuzione sconosciuto" << endl;
}
delete volume;
delete factory;
getchar();
return 0;
}