radarlib 1.4.6
odimh5v20_classes.hpp
Go to the documentation of this file.
1/*
2 * Radar Library
3 *
4 * Copyright (C) 2009-2010 ARPA-SIM <urpsim@smr.arpa.emr.it>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License along
17 * with this program; if not, write to the Free Software Foundation, Inc.,
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 *
20 * Author: Guido Billi <guidobilli@gmail.com>
21 */
22
23
28#ifndef __RADAR_ODIMH5V20_CLASES_HPP__
29#define __RADAR_ODIMH5V20_CLASES_HPP__
30
31#include <radarlib/defs.h>
36
37#include <set>
38
39namespace OdimH5v20
40{
41
42/*===========================================================================*/
43/* FORWARD DECLARATIONS */
44/*===========================================================================*/
45
46class OdimFactory;
47class OdimObject;
48class OdimDataset;
49class OdimData;
50class OdimQuality;
51class OdimObjectDumper;
52class PolarVolume;
53class PolarScan;
54class PolarScanData;
55class Object_2D;
56class HorizontalObject_2D;
57class ImageObject;
58class CompObject;
59class XsecObject;
60class Product_2D;
61class Horizontal_Product_2D;
62class Product_PPI;
63class Product_CAPPI;
64class Product_PCAPPI;
65class Product_ETOP;
66class Product_MAX;
67class Product_RR;
68class Product_VIL;
69class Product_LBM;
70class Product_COMP;
71class Vertical_Product_2D;
72class Product_Panel;
73class Product_XSEC;
74class Product_RHI;
75class Product_VSP;
76class Product_HSP;
77class Product_2D_Data;
78class Vertical_Product_2D_Data;
79/*===========================================================================*/
80/* ODIM ROOT OBJECT */
81/*===========================================================================*/
82
94class RADAR_API OdimObject : public WHATRootMetadata
95{
96public:
97 virtual ~OdimObject();
98
104 virtual std::string getConventions();
110 virtual void setConventions();
111
119 virtual H5::H5File* getFile();
127 virtual H5::Group* getH5Object();
128
135 virtual bool existWhat();
136
143 virtual bool existWhere();
150 virtual bool existHow();
151
159 virtual MetadataGroup* getWhat();
167 virtual MetadataGroup* getWhere();
176 virtual MetadataGroup* getHow();
177 virtual std::string getObject ();
178 virtual void setObject (const std::string& val);
179 virtual std::string getVersion ();
180 virtual void setVersion (const std::string& val);
181 virtual time_t getDateTime ();
182 virtual void setDateTime (const time_t val);
183 virtual SourceInfo getSource ();
184 virtual void setSource (const SourceInfo& val);
185
192 virtual int getDatasetCount();
201 virtual OdimDataset* createDataset();
211 virtual OdimDataset* getDataset(int index);
220 virtual void removeDataset(int index);
221
222
223protected:
224 H5::H5File* file;
225 H5::Group* group;
226 MetadataGroup* meta_what;
227 MetadataGroup* meta_where;
228 MetadataGroup* meta_how;
229
230 /* uses cannot directly create OdimH5 objects, only factories provide functions to do it */
231 friend class OdimFactory;
232 OdimObject(H5::H5File* file);
233
234 virtual H5::Group* createDatasetGroup();
235 virtual H5::Group* getDatasetGroup(int num);
236
237 virtual void setMandatoryInformations ();
238 virtual void checkMandatoryInformations ();
239
240};
241
242/*===========================================================================*/
243/* ODIM DATASET */
244/*===========================================================================*/
245
256class RADAR_API OdimDataset
257{
258public:
259 virtual ~OdimDataset();
260
268 virtual H5::Group* getH5Object();
269
276 virtual bool existWhat();
277
284 virtual bool existWhere();
291 virtual bool existHow();
299 virtual MetadataGroup* getWhat();
307 virtual MetadataGroup* getWhere();
315 virtual MetadataGroup* getHow();
316
323 virtual int getDataCount();
331 virtual OdimData* createData();
341 virtual OdimData* getData(int index);
349 virtual void removeData(int index);
350
351protected:
352 H5::Group* group;
353 MetadataGroup* meta_what;
354 MetadataGroup* meta_where;
355 MetadataGroup* meta_how;
356
357 /* uses cannot directly create OdimH5 objects, only factories provide functions to do it */
358 friend class OdimObject;
359 OdimDataset(H5::Group* group);
360
361 virtual H5::Group* createDataGroup();
362 virtual H5::Group* getDataGroup(int num);
363};
364
365/*===========================================================================*/
366/* ODIM DATA */
367/*===========================================================================*/
368
379class RADAR_API OdimData
380{
381public:
382 virtual ~OdimData();
383
391 virtual H5::Group* getH5Object();
398 virtual bool existWhat();
399
406 virtual bool existWhere();
413 virtual bool existHow();
421 virtual MetadataGroup* getWhat();
429 virtual MetadataGroup* getWhere();
437 virtual MetadataGroup* getHow();
447 virtual H5::AtomType getDataType();
453 virtual int getDataWidth();
459 virtual int getDataHeight();
465 virtual void getDataDimension(int* height, int* width);
478 virtual void writeData(const void* buff, int width, int height, const H5::DataType& elemtype);
488 virtual void writeData(const char* buff, int width, int height);
498 virtual void writeData(const unsigned char* buff, int width, int height);
508 virtual void writeData(const unsigned short* buff, int width, int height);
518 virtual void writeData(const float* buff, int width, int height);
519
528 virtual void writeData(const DataMatrix<char>& matrix);
537 virtual void writeData(const DataMatrix<unsigned char>& matrix);
546 virtual void writeData(const DataMatrix<unsigned short>& matrix);
555 virtual void writeData(const DataMatrix<float>& matrix);
565 virtual void readData(void* buffer);
572 virtual int getQualityCount();
580 virtual OdimQuality* createQuality();
590 virtual OdimQuality* getQuality(int index);
598 virtual void removeQuality(int index);
599
600protected:
601 H5::Group* group;
602 MetadataGroup* meta_what;
603 MetadataGroup* meta_where;
604 MetadataGroup* meta_how;
605
606 /* uses cannot directly create OdimH5 objects, only factories provide functions to do it */
607 friend class OdimDataset;
608 OdimData(H5::Group* group);
609
610 virtual H5::DataSet* getData();
611 virtual H5::Group* createQualityGroup();
612 virtual H5::Group* getQualityGroup(int num);
613};
614
615/*===========================================================================*/
616/* ODIM QUALITY*/
617/*===========================================================================*/
618
629class RADAR_API OdimQuality
630{
631public:
632 virtual ~OdimQuality();
633
641 virtual H5::Group* getH5Object();
648 virtual bool existWhat();
649
656 virtual bool existWhere();
663 virtual bool existHow();
664
672 virtual MetadataGroup* getWhat();
680 virtual MetadataGroup* getWhere();
688 virtual MetadataGroup* getHow();
698 virtual H5::AtomType getQualityType();
704 virtual int getQualityWidth();
710 virtual int getQualityHeight();
716 virtual void getQualityDimension(int* height, int* width);
729 virtual void writeQuality(const void* buff, int width, int height, const H5::DataType& elemtype);
739 virtual void writeQuality(const char* buff, int width, int height);
749 virtual void writeQuality(const unsigned char* buff, int width, int height);
759 virtual void writeQuality(const unsigned short* buff, int width, int height);
769 virtual void writeQuality(const float* buff, int width, int height);
770
779 virtual void writeQuality(const DataMatrix<char>& matrix);
788 virtual void writeQuality(const DataMatrix<unsigned char>& matrix);
797 virtual void writeQuality(const DataMatrix<unsigned short>& matrix);
806 virtual void writeQuality(const DataMatrix<float>& matrix);
816 virtual void readQuality(void* buffer);
817
818protected:
819 H5::Group* group;
820 MetadataGroup* meta_what;
821 MetadataGroup* meta_where;
822 MetadataGroup* meta_how;
823
824 /* uses cannot directly create OdimH5 objects, only factories provide functions to do it */
825 friend class OdimData;
826 friend class Product_2D_Data;
827 OdimQuality(H5::Group* group);
828
829 virtual H5::DataSet* getData();
830};
831
832/*===========================================================================*/
833/* POLAR VOLUME */
834/*===========================================================================*/
835
845class RADAR_API PolarVolume : public OdimObject, public WHERERootMetadata, public HOWRootMetadata
846{
847public:
848 virtual ~PolarVolume();
849
850 virtual double getLongitude ();
851 virtual void setLongitude (double val);
852 virtual double getLatitude ();
853 virtual void setLatitude (double val);
854 virtual double getAltitude ();
855 virtual void setAltitude (double val);
856
857 virtual std::string getTaskOrProdGen ();
858 virtual void setTaskOrProdGen (const std::string& val);
859 virtual time_t getStartEpochs ();
860 virtual void setStartEpochs (time_t val);
861 virtual time_t getEndEpochs ();
862 virtual void setEndEpochs (time_t val);
863 virtual std::string getSystem ();
864 virtual void setSystem (const std::string& val);
865 virtual std::string getSoftware ();
866 virtual void setSoftware (const std::string& val);
867 virtual std::string getSoftwareVer ();
868 virtual void setSoftwareVer (const std::string& val);
869 virtual double getZR_A ();
870 virtual void setZR_A (double val);
871 virtual double getZR_B ();
872 virtual void setZR_B (double val);
873 virtual double getKR_A ();
874 virtual void setKR_A (double val);
875 virtual double getKR_B ();
876 virtual void setKR_B (double val);
877 virtual bool getSimulated ();
878 virtual void setSimulated (bool val);
879
885 virtual int getScanCount ();
892 virtual PolarScan* createScan ();
900 virtual PolarScan* getScan (int index);
908 virtual void removeScan (int index);
915 virtual std::vector<PolarScan*> getScans ();
924 virtual std::vector<PolarScan*> getScans (double elevation, double gap = 0);
933 virtual std::vector<PolarScan*> getScansBetween (double minElevation, double maxElevation);
941 virtual std::vector<PolarScan*> getScans (const char* quantity);
942 virtual std::vector<PolarScan*> getScans (const std::string& quantity);
950 virtual std::vector<double> getScanAngles ();
957 virtual std::vector<double> getElevationAngles ();
964 virtual std::set<std::string> getStoredQuantities();
965
966protected:
967 /* uses cannot directly create OdimH5 objects, only factories provide functions to do it */
968 friend class OdimFactory;
969 PolarVolume(H5::H5File* file);
970
971 virtual void setMandatoryInformations ();
972 virtual void checkMandatoryInformations ();
973
974};
975
976/*===========================================================================*/
977/* POLAR VOLUME SCAN */
978/*===========================================================================*/
979
988class RADAR_API PolarScan : public OdimDataset, public WHATDatasetMetadata, public WHEREScanMetadata, public HOWPolarMetadata
989{
990public:
991 virtual ~PolarScan();
992
993 virtual void setMandatoryInformations();
994
995 virtual std::string getObject ();
996 virtual void setObject (const std::string& val);
997 virtual std::string getVersion ();
998 virtual void setVersion (const std::string& val);
999 virtual time_t getDateTime ();
1000 virtual void setDateTime (const time_t val);
1001 virtual SourceInfo getSource ();
1002 virtual void setSource (const SourceInfo& val);
1003
1004 virtual std::string getProduct ();
1005 virtual void setProduct (const std::string& val);
1006 virtual double getProdPar ();
1007 virtual VILHeights getProdParVIL ();
1008 virtual void setProdPar (double val);
1009 virtual void setProdPar (const VILHeights& val);
1010 virtual std::string getQuantity ();
1011 virtual void setQuantity (const std::string& val);
1012 virtual time_t getStartDateTime ();
1013 virtual void setStartDateTime (time_t val);
1014 virtual time_t getEndDateTime ();
1015 virtual void setEndDateTime (time_t val);
1016 virtual double getGain ();
1017 virtual void setGain (double val);
1018 virtual double getOffset ();
1019 virtual void setOffset (double val);
1020 virtual double getNodata ();
1021 virtual void setNodata (double val);
1022 virtual double getUndetect ();
1023 virtual void setUndetect (double val);
1024
1025 virtual double getLongitude ();
1026 virtual void setLongitude (double val);
1027 virtual double getLatitude ();
1028 virtual void setLatitude (double val);
1029 virtual double getAltitude ();
1030 virtual void setAltitude (double val);
1031
1032 virtual double getEAngle ();
1033 virtual void setEAngle (double val);
1034 virtual int getNumBins ();
1035 virtual void setNumBins (int val);
1036 virtual double getRangeStart ();
1037 virtual void setRangeStart (double val);
1038 virtual double getRangeScale ();
1039 virtual void setRangeScale (double val);
1040 virtual int getNumRays ();
1041 virtual void setNumRays (int val);
1042 virtual int getA1Gate ();
1043 virtual void setA1Gate (int val);
1044
1045 virtual std::string getTaskOrProdGen ();
1046 virtual void setTaskOrProdGen (const std::string& val);
1047 virtual time_t getStartEpochs ();
1048 virtual void setStartEpochs (time_t val);
1049 virtual time_t getEndEpochs ();
1050 virtual void setEndEpochs (time_t val);
1051 virtual std::string getSystem ();
1052 virtual void setSystem (const std::string& val);
1053 virtual std::string getSoftware ();
1054 virtual void setSoftware (const std::string& val);
1055 virtual std::string getSoftwareVer ();
1056 virtual void setSoftwareVer (const std::string& val);
1057 virtual double getZR_A ();
1058 virtual void setZR_A (double val);
1059 virtual double getZR_B ();
1060 virtual void setZR_B (double val);
1061 virtual double getKR_A ();
1062 virtual void setKR_A (double val);
1063 virtual double getKR_B ();
1064 virtual void setKR_B (double val);
1065 virtual bool getSimulated ();
1066 virtual void setSimulated (bool val);
1067
1068 virtual double getBeamWidth ();
1069 virtual double getBeamWidth (double defaultValue);
1070 virtual void setBeamWidth (double val);
1071 virtual double getWaveLength ();
1072 virtual double getWaveLength (double defaultValue);
1073 virtual void setWaveLength (double val);
1074 virtual double getRPM ();
1075 virtual double getRPM (double defaultValue);
1076 virtual void setRPM (double val);
1077 virtual double getPulseWidth ();
1078 virtual double getPulseWidth (double defaultValue);
1079 virtual void setPulseWidth (double val);
1080 virtual int getLowPRF ();
1081 virtual int getLowPRF (int defaultValue);
1082 virtual void setLowPRF (int val);
1083 virtual int getHighPRF ();
1084 virtual int getHighPRF (int defaultValue);
1085 virtual void setHighPRF (int val);
1086
1087 virtual std::string getAzimuthMethod ();
1088 virtual void setAzimuthMethod (const std::string& val);
1089 virtual std::string getBinMethod ();
1090 virtual void setBinMethod (const std::string& val);
1091 virtual std::vector<AZAngles> getAzimuthAngles ();
1092 virtual void setAzimuthAngles (const std::vector<AZAngles>& val, int precision = 10);
1093 virtual std::vector<double> getElevationAngles ();
1094 virtual void setElevationAngles (const std::vector<double>& val, int precision = 10);
1095 virtual std::vector<AZTimes> getAzimuthTimes ();
1096 virtual void setAzimuthTimes (const std::vector<AZTimes>& val);
1097
1098 virtual double getPointAccEl ();
1099 virtual void setPointAccEl (double val);
1100 virtual double getPointAccAZ ();
1101 virtual void setPointAccAZ (double val);
1102 virtual bool getMalfunc ();
1103 virtual void setMalfunc (bool val);
1104 virtual std::string getRadarMsg ();
1105 virtual void setRadarMsg (const std::string& val);
1106 virtual double getRadarHorizon ();
1107 virtual void setRadarHorizon (double val);
1108 virtual double getMDS ();
1109 virtual void setMDS (double val);
1110 virtual double getOUR ();
1111 virtual void setOUR (double val);
1112 virtual std::vector<std::string> getDClutter ();
1113 virtual void setDClutter (const std::vector<std::string>& value);
1114 virtual std::string getComment ();
1115 virtual void setComment (const std::string& val);
1116 virtual double getSQI ();
1117 virtual void setSQI (double val);
1118 virtual double getCSR ();
1119 virtual void setCSR (double val);
1120 virtual double getLOG ();
1121 virtual void setLOG (double val);
1122 virtual bool getVPRCorr ();
1123 virtual void setVPRCorr (bool val);
1124 virtual double getFreeze ();
1125 virtual void setFreeze (double val);
1126 virtual double getMin ();
1127 virtual void setMin (double val);
1128 virtual double getMax ();
1129 virtual void setMax (double val);
1130 virtual double getStep ();
1131 virtual void setStep (double val);
1132 virtual int getLevels ();
1133 virtual void setLevels (int val);
1134 virtual double getPeakPwr ();
1135 virtual void setPeakPwr (double val);
1136 virtual double getAvgPwr ();
1137 virtual void setAvgPwr (double val);
1138 virtual double getDynRange ();
1139 virtual void setDynRange (double val);
1140 virtual double getRAC ();
1141 virtual void setRAC (double val);
1142 virtual bool getBBC ();
1143 virtual void setBBC (bool val);
1144 virtual double getPAC ();
1145 virtual void setPAC (double val);
1146 virtual double getS2N ();
1147 virtual void setS2N (double val);
1148 virtual std::string getPolarization ();
1149 virtual void setPolarization (const std::string& val);
1150
1157 virtual int getQuantityDataCount();
1158
1166 virtual PolarScanData* createQuantityData (const char* name);
1167 virtual PolarScanData* createQuantityData (const std::string& name);
1176 virtual PolarScanData* getQuantityData (int index);
1185 virtual PolarScanData* getQuantityData (const char* name);
1186 virtual PolarScanData* getQuantityData (const std::string& name);
1193 virtual void removeQuantityData (const char* name);
1194 virtual void removeQuantityData (const std::string& name);
1202 virtual bool hasQuantityData (const char* name);
1203 virtual bool hasQuantityData (const std::string& name);
1211 virtual int getQuantityDataIndex (const char* name);
1212 virtual int getQuantityDataIndex (const std::string& name);
1221 virtual int getDirection();
1228 std::set<std::string> getStoredQuantities ();
1240 static inline int originaRayIndex(int index, int originalDirection, int numrays, int a1gate)
1241 {
1242 if (originalDirection>0)
1243 {
1244 return (index + a1gate) % numrays;
1245 }
1246 else
1247 {
1248 return ((numrays + a1gate) - index) % numrays;
1249 }
1250 }
1251
1252private:
1253 PolarVolume* volume;
1254
1255 /* uses cannot directly create OdimH5 objects, only factories provide functions to do it */
1256 friend class PolarVolume;
1257 PolarScan(PolarVolume* volume, H5::Group* group);
1258};
1259
1260/*===========================================================================*/
1261/* POLAR SCAN DATA */
1262/*===========================================================================*/
1263
1271class RADAR_API PolarScanData: public OdimData, public WHATDatasetMetadata
1272{
1273public:
1274 virtual ~PolarScanData();
1275
1276 virtual std::string getObject ();
1277 virtual void setObject (const std::string& val);
1278 virtual std::string getVersion ();
1279 virtual void setVersion (const std::string& val);
1280 virtual time_t getDateTime ();
1281 virtual void setDateTime (const time_t val);
1282 virtual SourceInfo getSource ();
1283 virtual void setSource (const SourceInfo& val);
1284
1285 virtual std::string getProduct ();
1286 virtual void setProduct (const std::string& val);
1287 virtual double getProdPar ();
1288 virtual VILHeights getProdParVIL ();
1289 virtual void setProdPar (double val);
1290 virtual void setProdPar (const VILHeights& val);
1291 virtual std::string getQuantity ();
1292 virtual void setQuantity (const std::string& val);
1293 virtual time_t getStartDateTime();
1294 virtual void setStartDateTime(time_t val);
1295 virtual time_t getEndDateTime ();
1296 virtual void setEndDateTime (time_t val);
1297 virtual double getGain ();
1298 virtual void setGain (double val);
1299 virtual double getOffset ();
1300 virtual void setOffset (double val);
1301 virtual double getNodata ();
1302 virtual void setNodata (double val);
1303 virtual double getUndetect ();
1304 virtual void setUndetect (double val);
1305
1311 virtual int getNumRays();
1317 virtual int getNumBins();
1323 H5::AtomType getBinType();
1331 virtual void readTranslatedData(RayMatrix<float>& matrix);
1339 virtual void readTranslatedData(RayMatrix<double>& matrix);
1351 virtual void writeAndTranslate(RayMatrix<float>& matrix, float offset, float gain, H5::DataType type);
1363 virtual void writeAndTranslate(RayMatrix<double>& matrix, double offset, double gain, H5::DataType type);
1364
1365private:
1366 PolarScan* scan;
1367
1368 /* uses cannot directly create OdimH5 objects, only factories provide functions to do it */
1369 friend class PolarScan;
1370 PolarScanData(PolarScan* scan, H5::Group* group);
1371};
1372
1373
1374
1375/*===========================================================================*/
1376/* 2D OBJECT */
1377/*===========================================================================*/
1378
1389class RADAR_API Object_2D : public OdimObject, public HOWRootMetadata
1390{
1391public:
1392 virtual ~Object_2D() = 0;
1393
1394 //virtual void setMandatoryInformations();
1395 //void checkMandatoryInformations();
1396
1397 virtual std::string getTaskOrProdGen ();
1398 virtual void setTaskOrProdGen (const std::string& val);
1399 virtual time_t getStartEpochs ();
1400 virtual void setStartEpochs (time_t val);
1401 virtual time_t getEndEpochs ();
1402 virtual void setEndEpochs (time_t val);
1403 virtual std::string getSystem ();
1404 virtual void setSystem (const std::string& val);
1405 virtual std::string getSoftware ();
1406 virtual void setSoftware (const std::string& val);
1407 virtual std::string getSoftwareVer ();
1408 virtual void setSoftwareVer (const std::string& val);
1409 virtual double getZR_A ();
1410 virtual void setZR_A (double val);
1411 virtual double getZR_B ();
1412 virtual void setZR_B (double val);
1413 virtual double getKR_A ();
1414 virtual void setKR_A (double val);
1415 virtual double getKR_B ();
1416 virtual void setKR_B (double val);
1417 virtual bool getSimulated ();
1418 virtual void setSimulated (bool val);
1419
1425 virtual int getProductCount ();
1433 virtual Product_2D* createProduct2D (const char* type);
1434 virtual Product_2D* createProduct2D (const std::string & type);
1441 virtual Product_PPI* createProductPPI ();
1448 virtual Product_CAPPI* createProductCAPPI ();
1455 virtual Product_PCAPPI* createProductPCAPPI ();
1462 virtual Product_ETOP* createProductETOP ();
1469 virtual Product_MAX* createProductMAX ();
1476 virtual Product_RR* createProductRR ();
1483 virtual Product_VIL* createProductVIL ();
1490 virtual Product_LBM* createProductLBM ();
1497 virtual Product_COMP* createProductCOMP ();
1504 virtual Product_XSEC* createProductXSEC ();
1511 virtual Product_RHI* createProductRHI ();
1518 virtual Product_VSP* createProductVSP ();
1525 virtual Product_HSP* createProductHSP ();
1533 virtual Product_2D* getProduct (int index);
1541//
1542//virtual Horizontal_Product_2D* getHorizontal_Product_2D (int index);
1550//
1551//virtual Vertical_Product_2D* getVertical_Product_2D (int index);
1559 virtual void removeProduct (int index);
1560
1567 virtual std::vector<std::string > getProductsType ();
1568
1575 virtual std::vector<Product_2D*> getProducts();
1587
1588protected:
1589 /* uses cannot directly create OdimH5 objects, only factories provide functions to do it */
1590// friend class OdimFactory;
1591 Object_2D(H5::H5File* file);
1592
1593 virtual void setMandatoryInformations ();
1594 virtual void checkMandatoryInformations ();
1595};
1596
1597
1598/*===========================================================================*/
1599/* HORIZONTAL OBJECT */
1600/*===========================================================================*/
1611class RADAR_API HorizontalObject_2D : public Object_2D, public WHEREImageMetadata
1612{
1613public:
1614 virtual ~HorizontalObject_2D() ;
1615
1616 virtual void setMandatoryInformations();
1617 virtual void checkMandatoryInformations();
1618
1619 virtual std::string getProjectionArguments () ;
1620 virtual void setProjectionArguments (const std::string& val) ;
1621
1622 virtual int getXSize () ;
1623 virtual void setXSize (int val) ;
1624 virtual int getYSize () ;
1625 virtual void setYSize (int val) ;
1626 virtual double getXScale () ;
1627 virtual void setXScale (double val) ;
1628 virtual double getYScale () ;
1629 virtual void setYScale (double val) ;
1630
1631 virtual double getLL_Longitude () ;
1632 virtual void setLL_Longitude (double val) ;
1633 virtual double getLL_Latitude () ;
1634 virtual void setLL_Latitude (double val) ;
1635
1636 virtual double getUL_Longitude () ;
1637 virtual void setUL_Longitude (double val) ;
1638 virtual double getUL_Latitude () ;
1639 virtual void setUL_Latitude (double val) ;
1640
1641 virtual double getUR_Longitude () ;
1642 virtual void setUR_Longitude (double val) ;
1643 virtual double getUR_Latitude () ;
1644 virtual void setUR_Latitude (double val) ;
1645
1646 virtual double getLR_Longitude () ;
1647 virtual void setLR_Longitude (double val) ;
1648 virtual double getLR_Latitude () ;
1649 virtual void setLR_Latitude (double val) ;
1650protected:
1651 /* uses cannot directly create OdimH5 objects, only factories provide functions to do it */
1652// friend class OdimFactory;
1653 HorizontalObject_2D(H5::H5File* file);
1654
1655};
1656/*===========================================================================*/
1657/* IMAGE OBJECT */
1658/*===========================================================================*/
1670class RADAR_API ImageObject : public HorizontalObject_2D
1671{
1672public:
1673 virtual ~ImageObject() ;
1674
1675 virtual void setMandatoryInformations();
1676 virtual void checkMandatoryInformations();
1677
1678protected:
1679 /* uses cannot directly create OdimH5 objects, only factories provide functions to do it */
1680 friend class OdimFactory;
1681 ImageObject(H5::H5File* file);
1682};
1683/*===========================================================================*/
1684/* COMP OBJECT */
1685/*===========================================================================*/
1697class RADAR_API CompObject : public HorizontalObject_2D
1698{
1699public:
1700 virtual ~CompObject() ;
1701
1702 virtual void setMandatoryInformations();
1703 virtual void checkMandatoryInformations();
1704
1705protected:
1706 /* uses cannot directly create OdimH5 objects, only factories provide functions to do it */
1707 friend class OdimFactory;
1708 CompObject(H5::H5File* file);
1709};
1710
1711/*===========================================================================*/
1712/* XSEC OBJECT */
1713/*===========================================================================*/
1724class RADAR_API XsecObject : public Object_2D, public WHEREXSECMetadata, public WHERERhiMetadata, public WHEREPanelMetadata
1725{
1726public:
1727 virtual ~XsecObject();
1728
1729 virtual void setMandatoryInformations();
1730 virtual void checkMandatoryInformations();
1731
1732 virtual int getXSize () ;
1733 virtual void setXSize (int val) ;
1734 virtual int getYSize () ;
1735 virtual void setYSize (int val) ;
1736 virtual double getXScale () ;
1737 virtual void setXScale (double val) ;
1738 virtual double getYScale () ;
1739 virtual void setYScale (double val) ;
1740 virtual double getMinHeight () ;
1741 virtual void setMinHeight (double val) ;
1742 virtual double getMaxHeight () ;
1743 virtual void setMaxHeight (double val) ;
1744
1745 virtual double getRHILon ();
1746 virtual void setRHILon (double val);
1747 virtual double getRHILat ();
1748 virtual void setRHILat (double val);
1749 virtual double getAzimuthAngle ();
1750 virtual void setAzimuthAngle (double val);
1751 virtual std::vector<Angles> getAngles ();
1752 virtual void setAngles (const std::vector<Angles>& val, int precision = 0);
1753 virtual double getRange ();
1754 virtual void setRange (double val);
1755
1756 virtual double getStartLongitude () ;
1757 virtual void setStartLongitude (double val);
1758 virtual double getStartLatitude () ;
1759 virtual void setStartLatitude (double val);
1760 virtual double getStopLongitude ();
1761 virtual void setStopLongitude (double val);
1762 virtual double getStopLatitude ();
1763 virtual void setStopLatitude (double val);
1764
1765protected:
1766 /* uses cannot directly create OdimH5 objects, only factories provide functions to do it */
1767 friend class OdimFactory;
1768 XsecObject(H5::H5File* file);
1769
1770};
1771
1772/*===========================================================================*/
1773/* 2D_PRODUCT Dataset */
1774/*===========================================================================*/
1785class RADAR_API Product_2D : public OdimDataset, public WHATDatasetMetadata, public HOWPolarMetadata //, public WHEREImageMetadata, public HOWCartesianImageMetadata
1786{
1787public:
1788 virtual ~Product_2D();
1789
1790 virtual void setMandatoryInformations();
1791
1792 virtual std::string getObject ();
1793 virtual void setObject (const std::string& val);
1794 virtual std::string getVersion ();
1795 virtual void setVersion (const std::string& val);
1796 virtual time_t getDateTime ();
1797 virtual void setDateTime (const time_t val);
1798 virtual SourceInfo getSource ();
1799 virtual void setSource (const SourceInfo& val);
1800
1801 virtual std::string getProduct ();
1802 virtual void setProduct (const std::string& val);
1803 virtual double getProdPar ();
1804 virtual VILHeights getProdParVIL ();
1805 virtual void setProdPar (double val);
1806 virtual void setProdPar (const VILHeights& val);
1807 virtual std::string getQuantity ();
1808 virtual void setQuantity (const std::string& val);
1809 virtual time_t getStartDateTime ();
1810 virtual void setStartDateTime (time_t val);
1811 virtual time_t getEndDateTime ();
1812 virtual void setEndDateTime (time_t val);
1813 virtual double getGain ();
1814 virtual void setGain (double val);
1815 virtual double getOffset ();
1816 virtual void setOffset (double val);
1817 virtual double getNodata ();
1818 virtual void setNodata (double val);
1819 virtual double getUndetect ();
1820 virtual void setUndetect (double val);
1821
1822 virtual std::string getAzimuthMethod ();
1823 virtual void setAzimuthMethod (const std::string& val);
1824 virtual std::string getBinMethod ();
1825 virtual void setBinMethod (const std::string& val);
1826 virtual std::vector<AZAngles> getAzimuthAngles ();
1827 virtual void setAzimuthAngles (const std::vector<AZAngles>& val, int precision = 10);
1828 virtual std::vector<double> getElevationAngles ();
1829 virtual void setElevationAngles (const std::vector<double>& val, int precision = 10);
1830 virtual std::vector<AZTimes> getAzimuthTimes ();
1831 virtual void setAzimuthTimes (const std::vector<AZTimes>& val);
1832
1833 virtual double getPointAccEl ();
1834 virtual void setPointAccEl (double val);
1835 virtual double getPointAccAZ ();
1836 virtual void setPointAccAZ (double val);
1837 virtual bool getMalfunc ();
1838 virtual void setMalfunc (bool val);
1839 virtual std::string getRadarMsg ();
1840 virtual void setRadarMsg (const std::string& val);
1841 virtual double getRadarHorizon ();
1842 virtual void setRadarHorizon (double val);
1843 virtual double getMDS ();
1844 virtual void setMDS (double val);
1845 virtual double getOUR ();
1846 virtual void setOUR (double val);
1847 virtual std::vector<std::string> getDClutter ();
1848 virtual void setDClutter (const std::vector<std::string>& value);
1849 virtual std::string getComment ();
1850 virtual void setComment (const std::string& val);
1851 virtual double getSQI ();
1852 virtual void setSQI (double val);
1853 virtual double getCSR ();
1854 virtual void setCSR (double val);
1855 virtual double getLOG ();
1856 virtual void setLOG (double val);
1857 virtual bool getVPRCorr ();
1858 virtual void setVPRCorr (bool val);
1859 virtual double getFreeze ();
1860 virtual void setFreeze (double val);
1861 virtual double getMin ();
1862 virtual void setMin (double val);
1863 virtual double getMax ();
1864 virtual void setMax (double val);
1865 virtual double getStep ();
1866 virtual void setStep (double val);
1867 virtual int getLevels ();
1868 virtual void setLevels (int val);
1869 virtual double getPeakPwr ();
1870 virtual void setPeakPwr (double val);
1871 virtual double getAvgPwr ();
1872 virtual void setAvgPwr (double val);
1873 virtual double getDynRange ();
1874 virtual void setDynRange (double val);
1875 virtual double getRAC ();
1876 virtual void setRAC (double val);
1877 virtual bool getBBC ();
1878 virtual void setBBC (bool val);
1879 virtual double getPAC ();
1880 virtual void setPAC (double val);
1881 virtual double getS2N ();
1882 virtual void setS2N (double val);
1883 virtual std::string getPolarization ();
1884 virtual void setPolarization (const std::string& val);
1885
1886 virtual std::string getTaskOrProdGen ();
1887 virtual void setTaskOrProdGen (const std::string& val);
1888 virtual time_t getStartEpochs ();
1889 virtual void setStartEpochs (time_t val);
1890 virtual time_t getEndEpochs ();
1891 virtual void setEndEpochs (time_t val);
1892 virtual std::string getSystem ();
1893 virtual void setSystem (const std::string& val);
1894 virtual std::string getSoftware ();
1895 virtual void setSoftware (const std::string& val);
1896 virtual std::string getSoftwareVer ();
1897 virtual void setSoftwareVer (const std::string& val);
1898 virtual double getZR_A ();
1899 virtual void setZR_A (double val);
1900 virtual double getZR_B ();
1901 virtual void setZR_B (double val);
1902 virtual double getKR_A ();
1903 virtual void setKR_A (double val);
1904 virtual double getKR_B ();
1905 virtual void setKR_B (double val);
1906 virtual bool getSimulated ();
1907 virtual void setSimulated (bool val);
1908
1909 virtual double getBeamWidth ();
1910 virtual double getBeamWidth (double defaultValue);
1911 virtual void setBeamWidth (double val);
1912 virtual double getWaveLength ();
1913 virtual double getWaveLength (double defaultValue);
1914 virtual void setWaveLength (double val);
1915 virtual double getRPM ();
1916 virtual double getRPM (double defaultValue);
1917 virtual void setRPM (double val);
1918 virtual double getPulseWidth ();
1919 virtual double getPulseWidth (double defaultValue);
1920 virtual void setPulseWidth (double val);
1921 virtual int getLowPRF ();
1922 virtual int getLowPRF (int defaultValue);
1923 virtual void setLowPRF (int val);
1924 virtual int getHighPRF ();
1925 virtual int getHighPRF (int defaultValue);
1926 virtual void setHighPRF (int val);
1927/*-----
1928
1929 virtual double getLongitude ();
1930 virtual void setLongitude (double val);
1931 virtual double getLatitude ();
1932 virtual void setLatitude (double val);
1933 virtual double getAltitude ();
1934 virtual void setAltitude (double val);
1935
1936
1937 virtual double getEAngle ();
1938 virtual void setEAngle (double val);
1939 virtual int getNumBins ();
1940 virtual void setNumBins (int val);
1941 virtual double getRangeStart ();
1942 virtual void setRangeStart (double val);
1943 virtual double getRangeScale ();
1944 virtual void setRangeScale (double val);
1945 virtual int getNumRays ();
1946 virtual void setNumRays (int val);
1947 virtual int getA1Gate ();
1948 virtual void setA1Gate (int val);
1949
1950----*/
1951
1959 virtual Product_2D_Data* createQuantityData (const char* name);
1960 virtual Product_2D_Data* createQuantityData (const std::string& name);
1967 virtual int getQuantityDataCount();
1975 virtual bool hasQuantityData (const char* name);
1976 virtual bool hasQuantityData (const std::string& name);
1984 virtual int getQuantityDataIndex (const char* name);
1985 virtual int getQuantityDataIndex (const std::string& name);
1994 virtual Product_2D_Data* getQuantityData (int index);
2003 virtual Product_2D_Data* getQuantityData (const char* name);
2004 virtual Product_2D_Data* getQuantityData (const std::string& name);
2011 std::set<std::string> getStoredQuantities ();
2018 virtual void removeQuantityData (const char* name);
2019 virtual void removeQuantityData (const std::string& name);
2020
2021protected :
2022 Object_2D* object_2d;
2023
2024 /* uses cannot directly create OdimH5 objects, only factories provide functions to do it */
2025 friend class Object_2D;
2026 Product_2D(Object_2D* object_2d, H5::Group* group);
2027
2028};
2029
2030/*===========================================================================*/
2031/* HORIZONTAL 2D_PRODUCT Dataset */
2032/*===========================================================================*/
2033
2045{
2046public:
2047 virtual ~Horizontal_Product_2D();
2048public:
2049// virtual void setMandatoryInformations();
2050
2051 virtual std::string getProjectionArguments () ;
2052 virtual void setProjectionArguments (const std::string& val) ;
2053
2054 virtual int getXSize () ;
2055 virtual void setXSize (int val) ;
2056 virtual int getYSize () ;
2057 virtual void setYSize (int val) ;
2058 virtual double getXScale () ;
2059 virtual void setXScale (double val) ;
2060 virtual double getYScale () ;
2061 virtual void setYScale (double val) ;
2062
2063 virtual double getLL_Longitude () ;
2064 virtual void setLL_Longitude (double val) ;
2065 virtual double getLL_Latitude () ;
2066 virtual void setLL_Latitude (double val) ;
2067
2068 virtual double getUL_Longitude () ;
2069 virtual void setUL_Longitude (double val) ;
2070 virtual double getUL_Latitude () ;
2071 virtual void setUL_Latitude (double val) ;
2072
2073 virtual double getUR_Longitude () ;
2074 virtual void setUR_Longitude (double val) ;
2075 virtual double getUR_Latitude () ;
2076 virtual void setUR_Latitude (double val) ;
2077
2078 virtual double getLR_Longitude () ;
2079 virtual void setLR_Longitude (double val) ;
2080 virtual double getLR_Latitude () ;
2081 virtual void setLR_Latitude (double val) ;
2082/*--- queste devono essere implementate .-----*/
2083 virtual std::vector<Angles> getAngles () ;
2084 virtual void setAngles (const std::vector<Angles>& val, int precision = 0) ;
2085 virtual std::vector<Arotation> getArotation () ;
2086 virtual void setArotation (const std::vector<Arotation>& val, int precision = 0);
2087 virtual std::string getCAMethod ();
2088 virtual void setCAMethod (const std::string& val) ;
2089 virtual std::vector<Nodes> getNodes () ;
2090 virtual void setNodes (const std::vector<Nodes>& val) ;
2091 virtual int getACCnum () ;
2092 virtual void setCCnum (int val) ;
2093
2094protected:
2095// Product_2D * prod;
2096
2097 /* uses cannot directly create OdimH5 objects, only factories provide functions to do it */
2098 friend class Product_2D;
2099 Horizontal_Product_2D (Object_2D* object_2d, H5::Group* group);
2100};
2101
2102/*===========================================================================*/
2103/* PPI PRODUCT Dataset */
2104/*===========================================================================*/
2114class RADAR_API Product_PPI : public Horizontal_Product_2D
2115{
2116public:
2117 virtual ~Product_PPI() ;
2118
2119 virtual void setMandatoryInformations();
2120
2121private:
2122
2123 /* uses cannot directly create OdimH5 objects, only factories provide functions to do it */
2124 friend class Horizontal_Product_2D ;
2125 friend class Object_2D;
2126 Product_PPI(Object_2D * object_2d, H5::Group* group);
2127};
2128/*===========================================================================*/
2129/* CAPPI PRODUCT Dataset */
2130/*===========================================================================*/
2140class RADAR_API Product_CAPPI : public Horizontal_Product_2D
2141{
2142public:
2143 virtual ~Product_CAPPI() ;
2144
2145 virtual void setMandatoryInformations();
2146
2147private:
2148
2149 /* uses cannot directly create OdimH5 objects, only factories provide functions to do it */
2150 friend class Horizontal_Product_2D ;
2151 friend class Object_2D;
2152 Product_CAPPI(Object_2D * object_2d, H5::Group* group);
2153};
2154/*===========================================================================*/
2155/* PCAPPI PRODUCT Dataset */
2156/*===========================================================================*/
2167{
2168public:
2169 virtual ~Product_PCAPPI() ;
2170
2171 virtual void setMandatoryInformations();
2172
2173private:
2174
2175 /* uses cannot directly create OdimH5 objects, only factories provide functions to do it */
2176 friend class Horizontal_Product_2D ;
2177 friend class Object_2D;
2178 Product_PCAPPI(Object_2D * object_2d, H5::Group* group);
2179};
2180/*===========================================================================*/
2181/* ETOP PRODUCT Dataset */
2182/*===========================================================================*/
2192class RADAR_API Product_ETOP : public Horizontal_Product_2D
2193{
2194public:
2195 virtual ~Product_ETOP() ;
2196
2197 virtual void setMandatoryInformations();
2198
2199private:
2200
2201 /* uses cannot directly create OdimH5 objects, only factories provide functions to do it */
2202 friend class Horizontal_Product_2D ;
2203 friend class Object_2D;
2204 Product_ETOP(Object_2D * object_2d, H5::Group* group);
2205};
2206/*===========================================================================*/
2207/* MAX PRODUCT Dataset */
2208/*===========================================================================*/
2218class RADAR_API Product_MAX : public Horizontal_Product_2D
2219{
2220public:
2221 virtual ~Product_MAX() ;
2222
2223 virtual void setMandatoryInformations();
2224
2225private:
2226
2227 /* uses cannot directly create OdimH5 objects, only factories provide functions to do it */
2228 friend class Horizontal_Product_2D ;
2229 friend class Object_2D;
2230 Product_MAX(Object_2D * object_2d, H5::Group* group);
2231};
2232
2233/*===========================================================================*/
2234/* RR PRODUCT Dataset */
2235/*===========================================================================*/
2245class RADAR_API Product_RR : public Horizontal_Product_2D
2246{
2247public:
2248 virtual ~Product_RR() ;
2249
2250 virtual void setMandatoryInformations();
2251
2252private:
2253
2254 /* uses cannot directly create OdimH5 objects, only factories provide functions to do it */
2255 friend class Horizontal_Product_2D ;
2256 friend class Object_2D;
2257 Product_RR(Object_2D * object_2d, H5::Group* group);
2258};
2259/*===========================================================================*/
2260/* VIL PRODUCT Dataset */
2261/*===========================================================================*/
2271class RADAR_API Product_VIL : public Horizontal_Product_2D
2272{
2273public:
2274 virtual ~Product_VIL() ;
2275
2276 virtual void setMandatoryInformations();
2277
2278private:
2279
2280 /* uses cannot directly create OdimH5 objects, only factories provide functions to do it */
2281 friend class Horizontal_Product_2D ;
2282 friend class Object_2D;
2283 Product_VIL(Object_2D * object_2d, H5::Group* group);
2284};
2285/*===========================================================================*/
2286/* LBM PRODUCT Dataset */
2287/*===========================================================================*/
2297class RADAR_API Product_LBM : public Horizontal_Product_2D
2298{
2299public:
2300 virtual ~Product_LBM() ;
2301
2302 virtual void setMandatoryInformations();
2303
2304private:
2305
2306 /* uses cannot directly create OdimH5 objects, only factories provide functions to do it */
2307 friend class Horizontal_Product_2D ;
2308 friend class Object_2D;
2309 Product_LBM(Object_2D * object_2d, H5::Group* group);
2310};
2311
2312/*===========================================================================*/
2313/* COMP PRODUCT Dataset */
2314/*===========================================================================*/
2324class RADAR_API Product_COMP : public Horizontal_Product_2D
2325{
2326public:
2327 virtual ~Product_COMP() ;
2328
2329 virtual void setMandatoryInformations();
2330
2331private:
2332
2333 /* uses cannot directly create OdimH5 objects, only factories provide functions to do it */
2334 friend class Horizontal_Product_2D ;
2335 friend class Object_2D;
2336 Product_COMP(Object_2D * object_2d, H5::Group* group);
2337};
2338
2339/*===========================================================================*/
2340/* VERTICAL 2D_PRODUCT Dataset */
2341/*===========================================================================*/
2351class RADAR_API Vertical_Product_2D : public Product_2D, public WHEREXSECMetadata
2352{
2353public:
2354 virtual ~Vertical_Product_2D();
2355public:
2356 //virtual void setMandatoryInformations();
2357
2358 virtual int getXSize () ;
2359 virtual void setXSize (int val) ;
2360 virtual int getYSize () ;
2361 virtual void setYSize (int val) ;
2362 virtual double getXScale () ;
2363 virtual void setXScale (double val) ;
2364 virtual double getYScale () ;
2365 virtual void setYScale (double val) ;
2366 virtual double getMinHeight () ;
2367 virtual void setMinHeight (double val) ;
2368 virtual double getMaxHeight () ;
2369 virtual void setMaxHeight (double val) ;
2370
2371protected:
2372 /* uses cannot directly create OdimH5 objects, only factories provide functions to do it */
2373 friend class Product_2D;
2374 Vertical_Product_2D(Object_2D* object_2d, H5::Group* group);
2375};
2376
2377/*===========================================================================*/
2378/* XSEC PRODUCT Dataset */
2379/*===========================================================================*/
2389class RADAR_API Product_XSEC : public Vertical_Product_2D
2390{
2391public:
2392 virtual ~Product_XSEC() ;
2393
2394 virtual void setMandatoryInformations();
2395
2396private:
2397
2398 /* uses cannot directly create OdimH5 objects, only factories provide functions to do it */
2399 friend class Vertical_Product_2D ;
2400 friend class Object_2D;
2401 Product_XSEC(Object_2D* object_2d, H5::Group* group);
2402};
2403
2404/*===========================================================================*/
2405/* RHI PRODUCT Dataset */
2406/*===========================================================================*/
2416class RADAR_API Product_RHI : public Vertical_Product_2D, public WHERERhiMetadata
2417{
2418public:
2419 virtual ~Product_RHI() ;
2420
2421 virtual void setMandatoryInformations();
2422
2423 virtual double getRHILon ();
2424 virtual void setRHILon (double val);
2425 virtual double getRHILat ();
2426 virtual void setRHILat (double val);
2427 virtual double getAzimuthAngle ();
2428 virtual void setAzimuthAngle (double val);
2429 virtual std::vector<Angles> getAngles ();
2430 virtual void setAngles (const std::vector<Angles>& val, int precision = 0);
2431 virtual double getRange ();
2432 virtual void setRange (double val);
2433
2434private:
2435
2436 /* uses cannot directly create OdimH5 objects, only factories provide functions to do it */
2437 friend class Vertical_Product_2D ;
2438 friend class Object_2D;
2439 Product_RHI(Object_2D* object_2d, H5::Group* group);
2440};
2441
2442/*===========================================================================*/
2443/* VSP PRODUCT Dataset */
2444/*===========================================================================*/
2455{
2456public:
2457 virtual ~Product_Panel() ;
2458
2459 virtual void setMandatoryInformations();
2460 virtual double getStartLongitude () ;
2461 virtual void setStartLongitude (double val);
2462 virtual double getStartLatitude () ;
2463 virtual void setStartLatitude (double val);
2464 virtual double getStopLongitude ();
2465 virtual void setStopLongitude (double val);
2466 virtual double getStopLatitude ();
2467 virtual void setStopLatitude (double val);
2468
2469protected:
2470
2471 /* uses cannot directly create OdimH5 objects, only factories provide functions to do it */
2472 friend class Vertical_Product_2D ;
2473 friend class Product_2D;
2474 Product_Panel(Object_2D* object_2d, H5::Group* group);
2475};
2476
2477/*===========================================================================*/
2478/* HSP PRODUCT Dataset */
2479/*===========================================================================*/
2489class RADAR_API Product_HSP : public Product_Panel
2490{
2491public:
2492 virtual ~Product_HSP() ;
2493
2494 virtual void setMandatoryInformations();
2495
2496private:
2497
2498 /* uses cannot directly create OdimH5 objects, only factories provide functions to do it */
2499 friend class Product_Panel;
2500 friend class Object_2D;
2501 Product_HSP(Object_2D* object_2d, H5::Group* group);
2502};
2503
2504/*===========================================================================*/
2505/* VSP PRODUCT Dataset */
2506/*===========================================================================*/
2516class RADAR_API Product_VSP : public Product_Panel
2517{
2518public:
2519 virtual ~Product_VSP() ;
2520
2521 virtual void setMandatoryInformations();
2522
2523private:
2524
2525 /* uses cannot directly create OdimH5 objects, only factories provide functions to do it */
2526 friend class Product_Panel;
2527 friend class Object_2D;
2528 Product_VSP(Object_2D* object_2d, H5::Group* group);
2529};
2530/*===========================================================================*/
2531/* 2D PRODUCT DATA */
2532/*===========================================================================*/
2533
2541class RADAR_API Product_2D_Data: public OdimData, public WHATDatasetMetadata
2542{
2543public:
2544 virtual ~Product_2D_Data();
2545
2546 virtual std::string getObject ();
2547 virtual void setObject (const std::string& val);
2548 virtual std::string getVersion ();
2549 virtual void setVersion (const std::string& val);
2550 virtual time_t getDateTime ();
2551 virtual void setDateTime (const time_t val);
2552 virtual SourceInfo getSource ();
2553 virtual void setSource (const SourceInfo& val);
2554
2555 virtual std::string getProduct ();
2556 virtual void setProduct (const std::string& val);
2557 virtual double getProdPar ();
2558 virtual VILHeights getProdParVIL ();
2559 virtual void setProdPar (double val);
2560 virtual void setProdPar (const VILHeights& val);
2561 virtual std::string getQuantity ();
2562 virtual void setQuantity (const std::string& val);
2563 virtual time_t getStartDateTime();
2564 virtual void setStartDateTime(time_t val);
2565 virtual time_t getEndDateTime ();
2566 virtual void setEndDateTime (time_t val);
2567 virtual double getGain ();
2568 virtual void setGain (double val);
2569 virtual double getOffset ();
2570 virtual void setOffset (double val);
2571 virtual double getNodata ();
2572 virtual void setNodata (double val);
2573 virtual double getUndetect ();
2574 virtual void setUndetect (double val);
2575
2581 virtual int getNumXElem();
2587 virtual int getNumYElem();
2593 H5::AtomType getElemType();
2601 virtual void readTranslatedData(DataMatrix<float>& matrix);
2609 virtual void readTranslatedData(DataMatrix<double>& matrix);
2621 virtual void writeAndTranslate(DataMatrix<float>& matrix, float offset, float gain, H5::DataType type);
2633 virtual void writeAndTranslate(DataMatrix<double>& matrix, double offset, double gain, H5::DataType type);
2634
2641 virtual int getQualityDataCount();
2648 virtual OdimQuality* createQualityData ();
2658 virtual OdimQuality* getQualityData (int index);
2666 virtual void removeQualityData (int index);
2667
2668private:
2669 Product_2D* prod;
2670
2671 /* uses cannot directly create OdimH5 objects, only factories provide functions to do it */
2672 friend class Horizontal_Product_2D;
2673 friend class Product_2D;
2674 Product_2D_Data(Product_2D* prod, H5::Group* group);
2675};
2676
2677
2678/*===========================================================================*/
2679
2680}
2681
2682#endif
2683
2684
OdimH5 v2.0 CompObject.
Definition odimh5v20_classes.hpp:1698
Matrix of data values.
Definition odimh5v20_support.hpp:472
Interface fot HOW dataset attributes methods for cartesian images.
Definition odimh5v20_metadata.hpp:2309
Interface for HOW dataset attributes methods for polar data.
Definition odimh5v20_metadata.hpp:1955
Interface fot HOW root attributes methods.
Definition odimh5v20_metadata.hpp:1716
OdimH5 v2.0 Horizontal Product_2D Dataset.
Definition odimh5v20_classes.hpp:2045
OdimH5 v2.0 horizontalObject.
Definition odimh5v20_classes.hpp:1612
OdimH5 v2.0 ImageObject.
Definition odimh5v20_classes.hpp:1671
Attribute (odim metadata) group.
Definition odimh5v20_metadata.hpp:54
OdimH5 v2.0 Object_2D.
Definition odimh5v20_classes.hpp:1390
Generic OdimH5 v2.0 data group.
Definition odimh5v20_classes.hpp:380
Generic OdimH5 v2.0 dataset group.
Definition odimh5v20_classes.hpp:257
OdimH5 objects factory.
Definition odimh5v20_factory.hpp:50
Generic OdimH5 v2.0 object.
Definition odimh5v20_classes.hpp:95
Generic OdimH5 v2.0 quality group.
Definition odimh5v20_classes.hpp:630
OdimH5 v2.0 SCAN quantity data.
Definition odimh5v20_classes.hpp:1272
OdimH5 v2.0 Polar Volume SCAN.
Definition odimh5v20_classes.hpp:989
static int originaRayIndex(int index, int originalDirection, int numrays, int a1gate)
Calculate the original ray index of a scan.
Definition odimh5v20_classes.hpp:1240
OdimH5 v2.0 Polar Volume.
Definition odimh5v20_classes.hpp:846
OdimH5 v2.0 2d product quantity data.
Definition odimh5v20_classes.hpp:2542
OdimH5 v2.0 Product_2D Dataset.
Definition odimh5v20_classes.hpp:1786
OdimH5 v2.0 CAPPI Product Dataset.
Definition odimh5v20_classes.hpp:2141
OdimH5 v2.0 COMP Product Dataset.
Definition odimh5v20_classes.hpp:2325
OdimH5 v2.0 ETOP Product Dataset.
Definition odimh5v20_classes.hpp:2193
OdimH5 v2.0 HSP Product Dataset.
Definition odimh5v20_classes.hpp:2490
OdimH5 v2.0 PPI Product Dataset.
Definition odimh5v20_classes.hpp:2298
OdimH5 v2.0 MAX Product Dataset.
Definition odimh5v20_classes.hpp:2219
OdimH5 v2.0 PCAPPI Product Dataset.
Definition odimh5v20_classes.hpp:2167
OdimH5 v2.0 PPI Product Dataset.
Definition odimh5v20_classes.hpp:2115
OdimH5 v2.0 Panel Product Dataset.
Definition odimh5v20_classes.hpp:2455
OdimH5 v2.0 RHI Product Dataset.
Definition odimh5v20_classes.hpp:2417
OdimH5 v2.0 RR Product Dataset.
Definition odimh5v20_classes.hpp:2246
OdimH5 v2.0 VIL Product Dataset.
Definition odimh5v20_classes.hpp:2272
OdimH5 v2.0 VSP Product Dataset.
Definition odimh5v20_classes.hpp:2517
OdimH5 v2.0 XSEC Product Dataset.
Definition odimh5v20_classes.hpp:2390
OdimH5 rays matrix.
Definition odimh5v20_support.hpp:616
OdimH5 object source informations.
Definition odimh5v20_support.hpp:111
Bottom and top heights (m) of the integration layer.
Definition odimh5v20_support.hpp:418
OdimH5 v2.0 Vericat Product_2D Dataset.
Definition odimh5v20_classes.hpp:2352
Interface fot WHAT dataset attributes methods.
Definition odimh5v20_metadata.hpp:1035
Interface fot WHAT root attributes methods.
Definition odimh5v20_metadata.hpp:976
Interface fot WHERE dataset attributes methods for images.
Definition odimh5v20_metadata.hpp:1367
Interface for WHERE dataset attributes methods for Panel.
Definition odimh5v20_metadata.hpp:1660
Interface for WHERE dataset attributes methods for RHI.
Definition odimh5v20_metadata.hpp:1596
Interface fot WHERE root attributes methods.
Definition odimh5v20_metadata.hpp:1174
Interface fot WHERE dataset attributes methods for polar scan.
Definition odimh5v20_metadata.hpp:1211
Interface for WHERE dataset attributes methods for XSEC.
Definition odimh5v20_metadata.hpp:1522
OdimH5 v2.0 XsecObject.
Definition odimh5v20_classes.hpp:1725
Internal library macros.
Namespace related to ODIMH5 version 2.0.
Definition odimh5v20.hpp:46
Constants and values used by OdimH5 library.
OdimH5 exceptions.
Classes about attributes groups for OdimH5 objects.
Classes and struct used by main OdimH5 classes.