55 GRID, SWATH, ZA, OTHERVARS
58 GENERAL_DIMSCALE, GENERAL_LATLON2D, GENERAL_LATLON1D, GENERAL_LATLON_COOR_ATTR, OTHERGMS
61 OMI, MLS, HIRDLS, TES, NOTAURA
63 static std::string FILE_ATTR_TABLE_NAME =
"HDF5_GLOBAL";
82 virtual const char *what()
const throw ()
84 return this->message.c_str();
87 virtual void setException(std::string except_message)
89 this->message = except_message;
95 template<
typename T,
typename U,
typename V,
typename W,
typename X>
static void _throw5(
const char *fname,
int line,
96 int numarg,
const T & a1,
const U & a2,
const V & a3,
const W & a4,
const X & a5)
98 std::ostringstream ss;
99 ss << fname <<
":" << line <<
":";
100 for (
int i = 0; i < numarg; ++i) {
122 throw Exception(ss.str());
128 #define throw1(a1) _throw5(__FILE__, __LINE__, 1, a1, 0, 0, 0, 0)
129 #define throw2(a1, a2) _throw5(__FILE__, __LINE__, 2, a1, a2, 0, 0, 0)
130 #define throw3(a1, a2, a3) _throw5(__FILE__, __LINE__, 3, a1, a2, a3, 0, 0)
131 #define throw4(a1, a2, a3, a4) _throw5(__FILE__, __LINE__, 4, a1, a2, a3, a4, 0)
132 #define throw5(a1, a2, a3, a4, a5) _throw5(__FILE__, __LINE__, 5, a1, a2, a3, a4, a5)
135 template<
typename T>
void operator ()(T * ptr)
147 hsize_t getSize()
const
151 const std::string & getName()
const
155 const std::string & getNewName()
const
157 return this->newname;
163 return unlimited_dim;
168 size(dimsize), name(
""), newname(
""), unlimited_dim(false)
178 friend class EOS5File;
184 friend class EOS5CVar;
185 friend class GMSPVar;
193 dtype(H5UNSUPTYPE), count(0), fstrsize(0),is_cset_ascii(
true)
199 const std::string & getName()
const
204 const std::string & getNewName()
const
206 return this->newname;
209 H5DataType getType()
const
214 hsize_t getCount()
const
219 size_t getBufSize()
const
221 return (this->value).size();
224 const std::vector<char>&getValue()
const
229 const std::vector<size_t>&getStrSize()
const
231 return this->strsize;
234 bool getCsetType()
const {
235 return this->is_cset_ascii;
243 std::vector<size_t> strsize;
245 std::vector<char> value;
262 dtype(H5UNSUPTYPE), rank(-1), comp_ratio(1), total_elems(0), unsupported_attr_dtype(
false),
263 unsupported_attr_dspace(
false), unsupported_dspace(
false), dimnameflag(
false)
279 return this->newname;
285 return this->fullpath;
288 size_t getTotalElems()
const
290 return this->total_elems;
306 const std::vector<Attribute *>&getAttributes()
const
320 return this->comp_ratio;
327 std::string fullpath;
332 bool unsupported_attr_dtype;
333 bool unsupported_attr_dspace;
334 bool unsupported_dspace;
337 std::vector<Attribute *> attrs;
338 std::vector<Dimension *> dims;
353 cvartype(CV_UNSUPPORTED)
362 return this->cvartype;
365 bool isLatLon()
const;
371 std::string cfdimname;
383 otype(H5UNSUPTYPE), sdbit(-1), numofdbits(-1)
390 H5DataType getOriginalType()
const
395 int getStartBit()
const
400 int getBitNum()
const
402 return this->numofdbits;
418 product_type(General_Product)
429 return this->product_type;
433 H5GCFProduct product_type;
441 eos_type(OTHERVARS), is_2dlatlon(
false), point_lower(0.0), point_upper(0.0), point_left(0.0), point_right(0.0), xdimsize(
442 0), ydimsize(0), eos5_pixelreg(HE5_HDFE_CENTER),
443 eos5_origin(HE5_HDFE_GD_UL),
444 eos5_projcode(HE5_GCTP_GEO),
447 std::fill_n(param, 13, 0);
456 EOS5Type getEos5Type()
const
458 return this->eos_type;
460 float getPointLower()
const
462 return this->point_lower;
464 float getPointUpper()
const
466 return this->point_upper;
469 float getPointLeft()
const
471 return this->point_left;
473 float getPointRight()
const
475 return this->point_right;
478 EOS5GridPRType getPixelReg()
const
480 return this->eos5_pixelreg;
482 EOS5GridOriginType getOrigin()
const
484 return this->eos5_origin;
487 EOS5GridPCType getProjCode()
const
489 return this->eos5_projcode;
492 int getXDimSize()
const
494 return this->xdimsize;
497 int getYDimSize()
const
499 return this->ydimsize;
502 std::vector<double> getParams()
const
504 std::vector<double> ret_params;
505 for (
int i = 0; i < 13; i++)
506 ret_params.push_back(param[i]);
515 int getSphere()
const
529 EOS5GridPRType eos5_pixelreg;
530 EOS5GridOriginType eos5_origin;
531 EOS5GridPCType eos5_projcode;
543 unsupported_attr_dtype(
false), unsupported_attr_dspace(
false)
558 return this->newname;
561 const std::vector<Attribute *>&getAttributes()
const
571 std::vector<Attribute *> attrs;
572 bool unsupported_attr_dtype;
573 bool unsupported_attr_dspace;
577 friend class EOS5File;
691 void Retrieve_H5_Obj(hid_t grp_id,
const char*gname,
bool include_attr);
692 void Retrieve_H5_Attr_Info(
Attribute *, hid_t obj_id,
const int j,
bool& unsup_attr_dtype,
bool & unsup_attr_dspace);
694 void Retrieve_H5_Attr_Value(
Attribute *attr, std::string);
696 void Retrieve_H5_VarType(
Var*, hid_t dset_id,
const std::string& varname,
bool &unsup_var_dtype);
697 void Retrieve_H5_VarDim(
Var*, hid_t dset_id,
const std::string &varname,
bool & unsup_var_dspace);
699 float Retrieve_H5_VarCompRatio(
Var*, hid_t);
701 void Handle_Group_Unsupported_Dtype() ;
702 void Handle_Var_Unsupported_Dtype() ;
703 void Handle_VarAttr_Unsupported_Dtype() ;
705 void Handle_GroupAttr_Unsupported_Dspace() ;
706 void Handle_VarAttr_Unsupported_Dspace() ;
708 void Gen_Group_Unsupported_Dtype_Info() ;
709 void Gen_Var_Unsupported_Dtype_Info() ;
710 virtual void Gen_VarAttr_Unsupported_Dtype_Info() ;
712 void Handle_GeneralObj_NameClashing(
bool, std::set<std::string> &objnameset) ;
713 void Handle_Var_NameClashing(std::set<std::string> &objnameset) ;
714 void Handle_Group_NameClashing(std::set<std::string> &objnameset) ;
715 void Handle_Obj_AttrNameClashing() ;
716 template<
typename T>
void Handle_General_NameClashing(std::set<std::string>&objnameset, std::vector<T*>& objvec) ;
718 void Add_One_FakeDim_Name(
Dimension *dim) ;
719 void Adjust_Duplicate_FakeDim_Name(
Dimension * dim) ;
720 void Insert_One_NameSizeMap_Element(std::string name, hsize_t size,
bool unlimited) ;
721 void Insert_One_NameSizeMap_Element2(std::map<std::string, hsize_t> &, std::map<std::string, bool>&, std::string name, hsize_t size,
724 virtual std::string get_CF_string(std::string);
725 virtual void Replace_Var_Info(
Var* src,
Var *target);
726 virtual void Replace_Var_Attrs(
Var *src,
Var*target);
728 void Add_Str_Attr(
Attribute* attr,
const std::string &attrname,
const std::string& strvalue) ;
729 std::string Retrieve_Str_Attr_Value(
Attribute *attr,
const std::string var_path);
730 bool Is_Str_Attr(
Attribute* attr, std::string varfullpath,
const std::string &attrname,
const std::string& strvalue);
731 void Add_One_Float_Attr(
Attribute* attr,
const std::string &attrname,
float float_value) ;
732 void Replace_Var_Str_Attr(
Var* var,
const std::string &attr_name,
const std::string& strvalue);
733 void Change_Attr_One_Str_to_Others(
Attribute *attr,
Var *var) ;
736 bool Is_geolatlon(
const std::string &var_name,
bool is_lat);
737 bool has_latlon_cf_units(
Attribute*attr,
const std::string &varfullpath,
bool is_lat);
742 bool is_var_under_group(
const std::string &varname,
const std::string &grpname,
const int var_rank, std::vector<size_t> &var_size);
745 void remove_netCDF_internal_attributes(
bool include_attr);
747 virtual void Gen_Unsupported_Dtype_Info(
bool) = 0;
748 virtual void Gen_Unsupported_Dspace_Info() ;
749 void Gen_DimScale_VarAttr_Unsupported_Dtype_Info() ;
750 void add_ignored_info_page_header();
751 void add_ignored_info_obj_header();
754 void add_ignored_info_links_header();
755 void add_ignored_info_links(
const std::string& link_name);
756 void add_ignored_info_namedtypes(
const std::string&,
const std::string&);
757 void add_ignored_info_attrs(
bool is_grp,
const std::string & obj_path,
const std::string &attr_name);
758 void add_ignored_info_objs(
bool is_dim_related,
const std::string & obj_path);
759 void add_no_ignored_info();
760 bool ignored_dimscale_ref_list(
Var *var);
762 void add_ignored_var_longstr_info(
Var*var,
Attribute *attr) ;
763 void add_ignored_grp_longstr_info(
const std::string& grp_path,
const std::string& attr_name);
764 void add_ignored_droplongstr_hdr();
765 bool Check_VarDropLongStr(
const std::string &varpath,
const std::vector<Dimension *>&, H5DataType) ;
767 void release_standalone_var_vector(std::vector<Var*>&
vars);
770 std::string Check_Grid_Mapping_VarName(
const std::string& attr_value,
const std::string& var_full_path);
771 std::string Check_Grid_Mapping_FullPath(
const std::string& attr_value);
774 File(
const char *h5_path, hid_t file_id) :
775 path(std::string(h5_path)), fileid(file_id), rootid(-1), unsupported_var_dtype(false), unsupported_attr_dtype(false), unsupported_var_dspace(
776 false), unsupported_attr_dspace(false), unsupported_var_attr_dspace(false), addeddimindex(0), check_ignored(
777 false), have_ignored(false), have_udim(false)
795 bool unsupported_var_dtype;
796 bool unsupported_attr_dtype;
798 bool unsupported_var_dspace;
799 bool unsupported_attr_dspace;
800 bool unsupported_var_attr_dspace;
802 std::set<std::string> dimnamelist;
804 std::map<std::string, hsize_t> dimname_to_dimsize;
807 std::map<std::string, bool> dimname_to_unlimited;
816 std::string ignored_msg;
823 GMFile(
const char*path, hid_t file_id, H5GCFProduct product, GMPattern gproduct_pattern);
826 H5GCFProduct getProductType()
const
831 const std::vector<GMCVar *>&getCVars()
const
836 const std::vector<GMSPVar *>&getSPVars()
const
900 bool Is_Hybrid_EOS5();
901 void Handle_Hybrid_EOS5();
918 return check_ignored;
928 void Remove_OMPSNPP_InputPointers();
929 void Add_Dim_Name_GPM() ;
930 void Add_Dim_Name_Mea_SeaWiFS() ;
931 void Handle_UseDimscale_Var_Dim_Names_Mea_SeaWiFS_Ozone(
Var*) ;
932 void Add_UseDimscale_Var_Dim_Names_Mea_SeaWiFS_Ozone(
Var *,
Attribute*) ;
934 void Add_Dim_Name_Mea_Ozonel3z() ;
935 bool check_cv(std::string & varname) ;
937 void Add_Dim_Name_Aqu_L3() ;
938 void Add_Dim_Name_OBPG_L3() ;
939 void Add_Dim_Name_OSMAPL2S() ;
940 void Add_Dim_Name_ACOS_L2S_OCO2_L1B() ;
942 void Add_Dim_Name_General_Product() ;
943 void Check_General_Product_Pattern() ;
944 bool Check_Dimscale_General_Product_Pattern() ;
945 bool Check_LatLon2D_General_Product_Pattern() ;
946 bool Check_LatLon2D_General_Product_Pattern_Name_Size(
const std::string& latname,
const std::string& lonname)
948 bool Check_LatLon1D_General_Product_Pattern() ;
949 bool Check_LatLon1D_General_Product_Pattern_Name_Size(
const std::string& latname,
const std::string& lonname)
952 bool Check_LatLon_With_Coordinate_Attr_General_Product_Pattern() ;
953 void Build_lat1D_latlon_candidate(
Var*,
const std::vector<Var*>&);
954 void Build_latg1D_latlon_candidate(
Var*,
const std::vector<Var*>&);
955 void Build_unique_latlon_candidate();
956 void Add_Dim_Name_LatLon1D_Or_CoordAttr_General_Product() ;
957 void Add_Dim_Name_LatLon2D_General_Product() ;
958 void Add_Dim_Name_Dimscale_General_Product() ;
959 void Handle_UseDimscale_Var_Dim_Names_General_Product(
Var*) ;
960 void Add_UseDimscale_Var_Dim_Names_General_Product(
Var*,
Attribute*) ;
963 void Update_M2DLatLon_Dimscale_CVs() ;
964 bool Check_1DGeolocation_Dimscale() ;
965 void Obtain_1DLatLon_CVs(std::vector<GMCVar*> &cvar_1dlat, std::vector<GMCVar*> &cvar_1dlon);
966 void Obtain_2DLatLon_Vars(std::vector<Var*> &var_2dlat, std::vector<Var*> &var_2dlon,
967 std::map<std::string, int>&latlon2d_path_to_index);
968 void Obtain_2DLLVars_With_Dims_not_1DLLCVars(std::vector<Var*> &var_2dlat, std::vector<Var*> &var_2dlon,
969 std::vector<GMCVar*> &cvar_1dlat, std::vector<GMCVar*> &cvar_1dlon, std::map<std::string, int>&latlon2d_path_to_index);
970 void Obtain_2DLLCVar_Candidate(std::vector<Var*> &var_2dlat, std::vector<Var*> &var_2dlon,
971 std::map<std::string, int>&latlon2d_path_to_index) ;
972 void Obtain_unique_2dCV(std::vector<Var*>&, std::map<std::string, int>&);
973 void Remove_2DLLCVar_Final_Candidate_from_Vars(std::vector<int>&) ;
975 void Handle_CVar_GPM_L1() ;
976 void Handle_CVar_GPM_L3() ;
977 void Handle_CVar_Mea_SeaWiFS() ;
978 void Handle_CVar_Aqu_L3() ;
979 void Handle_CVar_OBPG_L3() ;
980 void Handle_CVar_OSMAPL2S() ;
981 void Handle_CVar_Mea_Ozone() ;
982 void Handle_SpVar_ACOS_OCO2() ;
983 void Handle_CVar_Dimscale_General_Product() ;
984 void Handle_CVar_LatLon2D_General_Product() ;
985 void Handle_CVar_LatLon1D_General_Product() ;
986 void Handle_CVar_LatLon_General_Product() ;
988 void Adjust_Mea_Ozone_Obj_Name() ;
989 void Adjust_GPM_L3_Obj_Name() ;
991 void Handle_GMCVar_NameClashing(std::set<std::string> &) ;
992 void Handle_GMCVar_AttrNameClashing() ;
993 void Handle_GMSPVar_NameClashing(std::set<std::string> &) ;
994 void Handle_GMSPVar_AttrNameClashing() ;
995 template<
typename T>
void GMHandle_General_NameClashing(std::set<std::string>&objnameset, std::vector<T*>& objvec)
998 std::string get_CF_string(std::string s);
1001 bool Check_Var_2D_CVars(
Var*) ;
1002 bool Flatten_VarPath_In_Coordinates_Attr(
Var*) ;
1004 void Handle_LatLon_With_CoordinateAttr_Coor_Attr() ;
1005 bool Coord_Match_LatLon_NameSize(
const std::string & coord_values) ;
1006 bool Coord_Match_LatLon_NameSize_Same_Group(
const std::string & coord_values,
const std::string &var_path) ;
1007 void Add_VarPath_In_Coordinates_Attr(
Var*,
const std::string &);
1010 void Handle_GPM_l1_Coor_Attr() ;
1011 void Correct_GPM_L1_LatLon_units(
Var *var,
const std::string unit_value) ;
1012 void Add_GPM_Attrs() ;
1014 void Add_Aqu_Attrs() ;
1015 void Add_SeaWiFS_Attrs() ;
1016 void Create_Missing_CV(
GMCVar*,
const std::string &) ;
1018 bool Is_netCDF_Dimension(
Var *var) ;
1020 void Gen_Unsupported_Dtype_Info(
bool);
1021 void Gen_VarAttr_Unsupported_Dtype_Info() ;
1022 void Gen_GM_VarAttr_Unsupported_Dtype_Info();
1023 void Gen_Unsupported_Dspace_Info() ;
1024 void Handle_GM_Unsupported_Dtype(
bool) ;
1025 void Handle_GM_Unsupported_Dspace(
bool) ;
1027 bool Remove_EOS5_Strings(std::string &);
1028 bool Remove_EOS5_Strings_NonEOS_Fields (std::string &);
1029 void release_standalone_GMCVar_vector(std::vector<GMCVar*> &tempgc_vars);
1032 H5GCFProduct product_type;
1033 GMPattern gproduct_pattern;
1034 std::vector<GMCVar *> cvars;
1035 std::vector<GMSPVar *> spvars;
1036 std::string gp_latname;
1037 std::string gp_lonname;
1038 std::set<std::string> grp_cv_paths;
1039 std::vector<struct Name_Size_2Pairs> latloncv_candidate_pairs;
1045 bool have_nc4_non_coord;
1053 point_lower(0.0), point_upper(0.0), point_left(0.0), point_right(0.0),
1054 eos5_pixelreg(HE5_HDFE_CENTER),
1055 eos5_origin(HE5_HDFE_GD_UL),
1056 eos5_projcode(HE5_GCTP_GEO),
1057 zone(-1), sphere(0),
1059 xdimsize(0), ydimsize(0),
1060 has_nolatlon(
true), has_1dlatlon(
false), has_2dlatlon(
false), has_g2dlatlon(
false)
1062 std::fill_n(param, 13, 0);
1070 void Update_Dimnamelist();
1077 EOS5GridPRType eos5_pixelreg;
1078 EOS5GridOriginType eos5_origin;
1079 EOS5GridPCType eos5_projcode;
1085 std::vector<std::string> dimnames;
1086 std::set<std::string> vardimnames;
1087 std::map<std::string, hsize_t> dimnames_to_dimsizes;
1090 std::map<std::string, bool> dimnames_to_unlimited;
1092 std::map<hsize_t, std::string> dimsizes_to_dimnames;
1095 std::map<std::string, std::string> dnames_to_1dvnames;
1111 addeddimindex(0), has_nolatlon(
true), has_1dlatlon(
false), has_2dlatlon(
false), has_g2dlatlon(
false)
1121 std::vector<std::string> dimnames;
1122 std::set<std::string> vardimnames;
1123 std::map<std::string, hsize_t> dimnames_to_dimsizes;
1126 std::map<std::string, bool> dimnames_to_unlimited;
1128 std::map<hsize_t, std::string> dimsizes_to_dimnames;
1131 std::map<std::string, std::string> dnames_to_geo1dvnames;
1155 std::vector<std::string> dimnames;
1156 std::set<std::string> vardimnames;
1157 std::map<std::string, hsize_t> dimnames_to_dimsizes;
1159 std::map<std::string, bool> dimnames_to_unlimited;
1161 std::map<hsize_t, std::string> dimsizes_to_dimnames;
1164 std::map<std::string, std::string> dnames_to_1dvnames;
1173 EOS5File(
const char*he5_path, hid_t file_id) :
1174 File(he5_path, file_id), iscoard(
false), grids_multi_latloncvs(
false), isaura(
false), aura_name(NOTAURA),
1268 return check_ignored;
1277 void Adjust_H5_Attr_Value(
Attribute *attr) ;
1279 void Adjust_EOS5Dim_List(std::vector<HE5Dim>&) ;
1280 void Condense_EOS5Dim_List(std::vector<HE5Dim>&) ;
1281 void Remove_NegativeSizeDims(std::vector<HE5Dim>&) ;
1282 void Adjust_EOS5DimSize_List(std::vector<HE5Dim>&,
const std::vector<HE5Var>&,
const EOS5Type,
const std::string & eos5objname);
1283 void Adjust_EOS5VarDim_Info(std::vector<HE5Dim>&, std::vector<HE5Dim>&,
const std::string &, EOS5Type) ;
1285 void EOS5Handle_nonlatlon_dimcvars(std::vector<HE5Var> & eos5varlist, EOS5Type, std::string groupname,
1286 std::map<std::string, std::string>& dnamesgeo1dvnames) ;
1287 template<
class T>
void EOS5SwathGrid_Set_LatLon_Flags(T* eos5gridswath, std::vector<HE5Var>& eos5varlist)
1290 void Obtain_Var_NewName(
Var*) ;
1291 EOS5Type Get_Var_EOS5_Type(
Var*) ;
1294 template<
class T>
bool Set_Var_Dims(T*,
Var*, std::vector<HE5Var>&,
const std::string&,
int, EOS5Type) ;
1295 template<
class T>
void Create_Unique_DimName(T*, std::set<std::string>&,
Dimension *,
int, EOS5Type) ;
1297 template<
class T>
bool Check_All_DimNames(T*, std::string &, hsize_t);
1298 std::string Obtain_Var_EOS5Type_GroupName(
Var*, EOS5Type) ;
1299 int Check_EOS5Swath_FieldType(
Var*) ;
1300 void Get_Unique_Name(std::set<std::string>&, std::string&) ;
1302 template<
class T> std::string Create_Unique_FakeDimName(T*, EOS5Type) ;
1303 template<
class T>
void Set_NonParse_Var_Dims(T*,
Var*, std::map<hsize_t, std::string>&,
int, EOS5Type) ;
1305 void Handle_Grid_CVar(
bool) ;
1306 void Handle_Augmented_Grid_CVar() ;
1307 template<
class T>
void Handle_Single_Augment_CVar(T*, EOS5Type) ;
1309 void Handle_Multi_Nonaugment_Grid_CVar() ;
1310 void Handle_Single_Nonaugment_Grid_CVar(
EOS5CFGrid*) ;
1311 bool Handle_Single_Nonaugment_Grid_CVar_OwnLatLon(
EOS5CFGrid *, std::set<std::string>&) ;
1312 bool Handle_Single_Nonaugment_Grid_CVar_EOS5LatLon(
EOS5CFGrid *, std::set<std::string>&) ;
1313 void Handle_NonLatLon_Grid_CVar(
EOS5CFGrid *, std::set<std::string>&) ;
1314 void Remove_MultiDim_LatLon_EOS5CFGrid() ;
1317 void Handle_Swath_CVar(
bool) ;
1318 void Handle_Single_1DLatLon_Swath_CVar(
EOS5CFSwath *cfswath,
bool is_augmented) ;
1319 void Handle_Single_2DLatLon_Swath_CVar(
EOS5CFSwath *cfswath,
bool is_augmented) ;
1320 void Handle_NonLatLon_Swath_CVar(
EOS5CFSwath *cfswath, std::set<std::string>& tempvardimnamelist) ;
1321 void Handle_Special_NonLatLon_Swath_CVar(
EOS5CFSwath *cfswath, std::set<std::string>&tempvardimnamelist) ;
1323 void Handle_Za_CVar(
bool) ;
1325 bool Check_Augmentation_Status() ;
1330 template<
class T>
bool Check_Augmented_Var_Candidate(T*,
Var*, EOS5Type) ;
1332 template<
class T>
void Adjust_Per_Var_Dim_NewName_Before_Flattening(T*,
bool,
int,
int,
int) ;
1333 void Adjust_SharedLatLon_Grid_Var_Dim_Name() ;
1335 void Adjust_Aura_Attr_Name() ;
1336 void Adjust_Aura_Attr_Value() ;
1337 void Handle_EOS5CVar_Unit_Attr() ;
1338 void Add_EOS5_Grid_CF_Attr() ;
1339 void Handle_Aura_Special_Attr() ;
1341 std::string get_CF_string(std::string s);
1344 void Handle_EOS5CVar_NameClashing(std::set<std::string> &) ;
1345 void Handle_EOS5CVar_AttrNameClashing() ;
1346 template<
typename T>
void EOS5Handle_General_NameClashing(std::set<std::string>&objnameset, std::vector<T*>& objvec)
1348 template<
typename T>
void Create_Missing_CV(T*,
EOS5CVar*,
const std::string &, EOS5Type,
int) ;
1349 void Create_Added_Var_NewName_FullPath(EOS5Type,
const std::string&,
const std::string&, std::string &, std::string &) ;
1351 void Handle_EOS5_Unsupported_Dtype(
bool) ;
1352 void Handle_EOS5_Unsupported_Dspace(
bool) ;
1354 void Gen_Unsupported_Dtype_Info(
bool);
1355 void Gen_VarAttr_Unsupported_Dtype_Info() ;
1356 void Gen_EOS5_VarAttr_Unsupported_Dtype_Info() ;
1358 void Gen_Unsupported_Dspace_Info() ;
1361 std::vector<EOS5CVar *> cvars;
1362 std::vector<EOS5CFGrid *> eos5cfgrids;
1363 std::vector<EOS5CFSwath *> eos5cfswaths;
1364 std::vector<EOS5CFZa *> eos5cfzas;
1365 std::map<std::string, std::string> eos5_to_cf_attr_map;
1367 bool grids_multi_latloncvs;
1369 EOS5AuraName aura_name;
1371 std::multimap<std::string, std::string> dimname_to_dupdimnamelist;
This file includes several helper functions for translating HDF5 to CF-compliant.
This file includes functions to identify different NASA HDF5 products. Current supported products inc...
A class for parsing NASA HDF-EOS5 StructMetadata.
This class represents one attribute.
This class is a derived class of Var. It represents a coordinate variable.
CVType getCVType() const
Get the coordinate variable type of this variable.
This class repersents one dimension of an HDF5 dataset(variable).
bool HaveUnlimitedDim() const
Has unlimited dimensions.
This class simulates an HDF-EOS5 Grid. Currently only geographic projection is supported.
This class simulates an HDF-EOS5 Swath.
This class simulates an HDF-EOS5 Zonal average object.
This class is a derived class of CVar. It represents a coordinate variable for HDF-EOS5 files.
This class is a derived class of File. It includes methods applied to HDF-EOS5 files only.
void Add_EOS5File_Info(HE5Parser *, bool)
Add HDF-EOS5 dimension and coordinate variable related info. to EOS5Grid,EOS5Swath etc.
void Handle_Grid_Mapping_Vars()
Handle Grid Mapping Vars.
void Set_COARDS_Status()
Set COARDS flag.
void Handle_Unsupported_Dtype(bool)
Handle unsupported HDF5 datatypes for HDF-EOS5 products.
void Adjust_Var_Dim_NewName_Before_Flattening()
Adjust variable dimension names before the flattening for HDF-EOS5 files.
void Adjust_Attr_Info()
Adjust the attribute info for HDF-EOS5 products.
bool Get_IgnoredInfo_Flag()
Obtain the flag to see if ignored objects should be generated.
void Handle_Obj_NameClashing(bool)
Handle the object name clashing for HDF-EOS5 products.
void Retrieve_H5_CVar_Supported_Attr_Values()
Retrieve coordinate variable attributes.
bool Have_Grid_Mapping_Attrs()
Check if having Grid Mapping Attrs.
void Adjust_Obj_Name()
This method is a no-op operation. Leave here since the method in the base class is pure virtual.
void Handle_SpVar()
Handle special variables for HDF-EOS5 files.
void Retrieve_H5_Info(const char *path, hid_t file_id, bool include_attr)
Retrieve DDS information from the HDF5 file; a real implementation for HDF-EOS5 products.
const std::vector< EOS5CVar * > & getCVars() const
Obtain coordinate variables for HDF-EOS5 products.
void Handle_DimNameClashing()
void Handle_CVar()
Handle coordinate variable for HDF-EOS5 files.
const std::string & Get_Ignored_Msg()
Obtain the message that contains the ignored object info.
void Handle_SpVar_Attr()
Handle special variables for HDF-EOS5 files.
void Retrieve_H5_Supported_Attr_Values()
Retrieve attribute values for the supported HDF5 datatypes for HDF-EOS5 products.
void Handle_Coor_Attr()
Handle the coordinates attribute for HDF-EOS5 products.
void Adjust_Var_NewName_After_Parsing()
Adjust variable names for HDF-EOS5 files.
void Add_Supplement_Attrs(bool)
Add the supplemental attributes for HDF-EOS5 products.
void Add_Dim_Name(HE5Parser *)
Add the dimension name for HDF-EOS5 files.
void Handle_Unsupported_Others(bool)
Handle other unmapped objects/attributes for HDF-EOS5 products.
void Flatten_Obj_Name(bool include_attr)
Flatten the object name for HDF-EOS5 files.
void Adjust_Dim_Name()
Adjust the dimension name for HDF-EOS5 products.
void Handle_Unsupported_Dspace(bool)
Handle unsupported HDF5 dataspaces for HDF-EOS5 products.
void Check_Aura_Product_Status()
Check if the HDF-EOS5 file is an Aura file. Special CF operations need to be used.
void Adjust_EOS5Dim_Info(HE5Parser *strmeta_info)
Adjust HDF-EOS5 dimension information.
Exception(const std::string &msg)
Constructor.
This class retrieves all information from an HDF5 file.
bool HaveUnlimitedDim() const
Has unlimited dimensions.
std::vector< Group * > groups
Non-root group vectors.
virtual void Retrieve_H5_Var_Attr_Values(Var *var)
Retrieve attribute values for a variable.
virtual void Handle_Unsupported_Dspace(bool)
Handle unsupported HDF5 dataspaces for datasets.
const std::string & getPath() const
Obtain the path of the file.
std::map< hsize_t, std::string > dimsize_to_fakedimname
Handle added dimension names.
virtual void Handle_Grid_Mapping_Vars()
Handle Grid Mapping Vars.
virtual const std::string & Get_Ignored_Msg()=0
Obtain the message that contains the ignored object info.
virtual bool Get_IgnoredInfo_Flag()=0
Obtain the flag to see if ignored objects should be generated.
hid_t getFileID() const
Obtain the HDF5 file ID.
virtual void Handle_Unsupported_Others(bool)
Handle other unmapped objects/attributes.
virtual void Retrieve_H5_Supported_Attr_Values()
Retrieve attribute values for the supported HDF5 datatypes.
std::vector< Var * > vars
Var vectors.
const std::vector< Attribute * > & getAttributes() const
Public interface to obtain information of all attributes under the root group.
const std::vector< Var * > & getVars() const
Public interface to obtain information of all variables.
virtual void Add_Supplement_Attrs(bool)
Add supplemental attributes such as fullpath and original name.
virtual void Handle_Coor_Attr()=0
Handle "coordinates" attributes.
virtual void Retrieve_H5_Info(const char *path, hid_t file_id, bool)
std::vector< Attribute * > root_attrs
Root attribute vectors.
virtual void Handle_SpVar_Attr()=0
Handle special variable attributes.
virtual void Handle_CVar()=0
Handle coordinate variables.
virtual void Adjust_Dim_Name()=0
Adjust dimension names based on different products.
virtual void Adjust_Obj_Name()=0
Adjust object names based on different products.
virtual void Handle_Unsupported_Dtype(bool)
Handle unsupported HDF5 datatypes.
const std::vector< Group * > & getGroups() const
Public interface to obtain all the group info.
virtual void Flatten_Obj_Name(bool)
Flatten the object name.
virtual void Handle_DimNameClashing()=0
virtual void Retrieve_H5_CVar_Supported_Attr_Values()=0
Retrieve coordinate variable attributes.
virtual void Handle_SpVar()=0
Handle special variables.
virtual bool Have_Grid_Mapping_Attrs()
Check if having Grid Mapping Attrs.
This class is a derived class of CVar. It represents a coordinate variable for general HDF5 files.
H5GCFProduct getPtType() const
Get the data type of this variable.
This class is a derived class of File. It includes methods applied to general HDF5 files only.
void Handle_Unsupported_Dtype(bool)
Handle unsupported HDF5 datatypes for general HDF5 products.
void Adjust_Obj_Name()
Adjust object names based on different general NASA HDF5 products.
void Retrieve_H5_CVar_Supported_Attr_Values()
Retrieve coordinate variable attributes.
bool Have_Grid_Mapping_Attrs()
Check if having Grid Mapping Attrs.
void Adjust_Dim_Name()
Adjust dimension name for general NASA HDF5 products.
void Handle_Obj_NameClashing(bool)
Handle object name clashing for general NASA HDF5 products.
void Remove_Unused_FakeDimVars()
Unsupported datatype array may generate FakeDim. Remove them.
void Update_Product_Type()
Update "product type" attributes for general HDF5 products.
void Retrieve_H5_Info(const char *path, hid_t file_id, bool include_attr)
Retrieve DDS information from the HDF5 file; real implementation for general HDF5 products.
bool Get_IgnoredInfo_Flag()
Obtain ignored info. flag.
const std::string & Get_Ignored_Msg()
Get the message that contains the ignored obj. info.
void Handle_SpVar()
Handle special variables for general NASA HDF5 products.
void Adjust_H5_Attr_Value(Attribute *attr)
Adjust attribute values for general HDF5 products.
void Handle_Unsupported_Dspace(bool)
Handle unsupported HDF5 dataspaces for general HDF5 products.
void Handle_SpVar_Attr()
Handle special variable attributes for general NASA HDF5 products.
void Handle_Unsupported_Others(bool)
Handle other unmapped objects/attributes for general HDF5 products.
void Remove_Unneeded_Objects()
Remove unneeded objects.
void Add_Dim_Name()
Add dimension name.
void Flatten_Obj_Name(bool include_attr)
Flatten the object name for general NASA HDF5 products.
void Handle_Grid_Mapping_Vars()
Handle Grid Mapping Vars.
void Handle_DimNameClashing()
void Handle_Coor_Attr()
Handle "coordinates" attributes for general HDF5 products.
void Rename_NC4_NonCoordVars()
Remove the _nc4_non_coord from the variable new names.
void Retrieve_H5_Supported_Attr_Values()
Retrieve attribute values for the supported HDF5 datatypes for general HDF5 products.
void Add_Supplement_Attrs(bool)
Add supplemental attributes such as fullpath and original name for general NASA HDF5 products.
void Handle_CVar()
Handle coordinate variables for general NASA HDF5 products.
This class is a derived class of Var. It represents a special general HDF5 product(currently ACOS and...
This class represents an HDF5 group. The group will be flattened according to the CF conventions.
const std::string & getPath() const
Get the original path of this group.
const std::string & getNewName() const
Get the new name of this group(flattened,name clashed checked)
This class represents one HDF5 dataset(CF variable)
int getRank() const
Get the dimension rank of this variable.
const std::string & getFullPath() const
Get the full path of this variable.
const std::string & getName() const
Get the original name of this variable.
H5DataType getType() const
Get the data type of this variable(Not HDF5 datatype id)
const std::vector< Dimension * > & getDimensions() const
Get the list of the dimensions.
int getCompRatio() const
Get the compression ratio of this dataset.
const std::string & getNewName() const
Get the new name of this variable.