55 GRID, SWATH, ZA, OTHERVARS
58 GENERAL_DIMSCALE, GENERAL_LATLON2D, GENERAL_LATLON1D, GENERAL_LATLON_COOR_ATTR, OTHERGMS
61 OMI, MLS, HIRDLS, TES, NOTAURA
63static 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;
95template<
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), zero_storage_size(
false),unsupported_attr_dtype(
false),
263 unsupported_attr_dspace(
false), unsupported_dspace(
false), dimnameflag(
false),coord_attr_add_path(
true)
279 return this->newname;
285 return this->fullpath;
288 size_t getTotalElems()
const
290 return this->total_elems;
294 const bool getZeroStorageSize()
const
296 return this->zero_storage_size;
299 const bool getCoorAttrAddPath()
const
301 return this->coord_attr_add_path;
316 const std::vector<Attribute *>&getAttributes()
const
330 return this->comp_ratio;
337 std::string fullpath;
342 bool zero_storage_size;
343 bool unsupported_attr_dtype;
344 bool unsupported_attr_dspace;
345 bool unsupported_dspace;
347 bool coord_attr_add_path;
349 std::vector<Attribute *> attrs;
350 std::vector<Dimension *> dims;
365 cvartype(CV_UNSUPPORTED)
374 return this->cvartype;
377 bool isLatLon()
const;
383 std::string cfdimname;
395 otype(H5UNSUPTYPE), sdbit(-1), numofdbits(-1)
402 H5DataType getOriginalType()
const
407 int getStartBit()
const
412 int getBitNum()
const
414 return this->numofdbits;
430 product_type(General_Product)
441 return this->product_type;
445 H5GCFProduct product_type;
453 eos_type(OTHERVARS), is_2dlatlon(
false), point_lower(0.0), point_upper(0.0), point_left(0.0), point_right(0.0), xdimsize(
454 0), ydimsize(0), eos5_pixelreg(HE5_HDFE_CENTER),
455 eos5_origin(HE5_HDFE_GD_UL),
456 eos5_projcode(HE5_GCTP_GEO),
459 std::fill_n(param, 13, 0);
468 EOS5Type getEos5Type()
const
470 return this->eos_type;
472 float getPointLower()
const
474 return this->point_lower;
476 float getPointUpper()
const
478 return this->point_upper;
481 float getPointLeft()
const
483 return this->point_left;
485 float getPointRight()
const
487 return this->point_right;
490 EOS5GridPRType getPixelReg()
const
492 return this->eos5_pixelreg;
494 EOS5GridOriginType getOrigin()
const
496 return this->eos5_origin;
499 EOS5GridPCType getProjCode()
const
501 return this->eos5_projcode;
504 int getXDimSize()
const
506 return this->xdimsize;
509 int getYDimSize()
const
511 return this->ydimsize;
514 std::vector<double> getParams()
const
516 std::vector<double> ret_params;
517 for (
int i = 0; i < 13; i++)
518 ret_params.push_back(param[i]);
527 int getSphere()
const
541 EOS5GridPRType eos5_pixelreg;
542 EOS5GridOriginType eos5_origin;
543 EOS5GridPCType eos5_projcode;
555 unsupported_attr_dtype(
false), unsupported_attr_dspace(
false)
570 return this->newname;
573 const std::vector<Attribute *>&getAttributes()
const
583 std::vector<Attribute *> attrs;
584 bool unsupported_attr_dtype;
585 bool unsupported_attr_dspace;
589 friend class EOS5File;
696 void setDap4(
bool is_dap4)
714 void Retrieve_H5_Obj(hid_t grp_id,
const char*gname,
bool include_attr);
715 void Retrieve_H5_Attr_Info(
Attribute *, hid_t obj_id,
const int j,
bool& unsup_attr_dtype,
bool & unsup_attr_dspace);
717 void Retrieve_H5_Attr_Value(
Attribute *attr, std::string);
719 void Retrieve_H5_VarType(
Var*, hid_t dset_id,
const std::string& varname,
bool &unsup_var_dtype);
720 void Retrieve_H5_VarDim(
Var*, hid_t dset_id,
const std::string &varname,
bool & unsup_var_dspace);
722 float Retrieve_H5_VarCompRatio(
Var*, hid_t);
724 void Handle_Group_Unsupported_Dtype() ;
725 void Handle_Var_Unsupported_Dtype() ;
726 void Handle_VarAttr_Unsupported_Dtype() ;
728 void Handle_GroupAttr_Unsupported_Dspace() ;
729 void Handle_VarAttr_Unsupported_Dspace() ;
731 void Gen_Group_Unsupported_Dtype_Info() ;
732 void Gen_Var_Unsupported_Dtype_Info() ;
733 virtual void Gen_VarAttr_Unsupported_Dtype_Info() ;
735 void Handle_GeneralObj_NameClashing(
bool, std::set<std::string> &objnameset) ;
736 void Handle_Var_NameClashing(std::set<std::string> &objnameset) ;
737 void Handle_Group_NameClashing(std::set<std::string> &objnameset) ;
738 void Handle_Obj_AttrNameClashing() ;
739 template<
typename T>
void Handle_General_NameClashing(std::set<std::string>&objnameset, std::vector<T*>& objvec) ;
741 void Add_One_FakeDim_Name(
Dimension *dim) ;
742 void Adjust_Duplicate_FakeDim_Name(
Dimension * dim) ;
743 void Insert_One_NameSizeMap_Element(std::string name, hsize_t size,
bool unlimited) ;
744 void Insert_One_NameSizeMap_Element2(std::map<std::string, hsize_t> &, std::map<std::string, bool>&, std::string name, hsize_t size,
747 virtual std::string get_CF_string(std::string);
748 virtual void Replace_Var_Info(
Var* src,
Var *target);
749 virtual void Replace_Var_Attrs(
Var *src,
Var*target);
751 void Add_Str_Attr(
Attribute* attr,
const std::string &attrname,
const std::string& strvalue) ;
752 std::string Retrieve_Str_Attr_Value(
Attribute *attr,
const std::string var_path);
753 bool Is_Str_Attr(
Attribute* attr, std::string varfullpath,
const std::string &attrname,
const std::string& strvalue);
754 void Add_One_Float_Attr(
Attribute* attr,
const std::string &attrname,
float float_value) ;
755 void Replace_Var_Str_Attr(
Var* var,
const std::string &attr_name,
const std::string& strvalue);
756 void Change_Attr_One_Str_to_Others(
Attribute *attr,
Var *var) ;
759 bool Is_geolatlon(
const std::string &var_name,
bool is_lat);
760 bool has_latlon_cf_units(
Attribute*attr,
const std::string &varfullpath,
bool is_lat);
765 bool is_var_under_group(
const std::string &varname,
const std::string &grpname,
const int var_rank, std::vector<size_t> &var_size);
768 void remove_netCDF_internal_attributes(
bool include_attr);
770 virtual void Gen_Unsupported_Dtype_Info(
bool) = 0;
771 virtual void Gen_Unsupported_Dspace_Info() ;
772 void Gen_DimScale_VarAttr_Unsupported_Dtype_Info() ;
773 void add_ignored_info_page_header();
774 void add_ignored_info_obj_header();
777 void add_ignored_info_links_header();
778 void add_ignored_info_links(
const std::string& link_name);
779 void add_ignored_info_namedtypes(
const std::string&,
const std::string&);
780 void add_ignored_info_attrs(
bool is_grp,
const std::string & obj_path,
const std::string &attr_name);
781 void add_ignored_info_objs(
bool is_dim_related,
const std::string & obj_path);
782 void add_no_ignored_info();
783 bool ignored_dimscale_ref_list(
Var *var);
785 void add_ignored_var_longstr_info(
Var*var,
Attribute *attr) ;
786 void add_ignored_grp_longstr_info(
const std::string& grp_path,
const std::string& attr_name);
787 void add_ignored_droplongstr_hdr();
788 bool Check_VarDropLongStr(
const std::string &varpath,
const std::vector<Dimension *>&, H5DataType)
const;
790 void release_standalone_var_vector(std::vector<Var*>&
vars);
793 std::string Check_Grid_Mapping_VarName(
const std::string& attr_value,
const std::string& var_full_path);
794 std::string Check_Grid_Mapping_FullPath(
const std::string& attr_value);
797 File(
const char *h5_path, hid_t file_id) :
798 path(std::string(h5_path)), fileid(file_id), rootid(-1), unsupported_var_dtype(false), unsupported_attr_dtype(false), unsupported_var_dspace(
799 false), unsupported_attr_dspace(false), unsupported_var_attr_dspace(false), addeddimindex(0), check_ignored(
800 false), have_ignored(false), have_udim(false),_is_dap4(false)
818 bool unsupported_var_dtype;
819 bool unsupported_attr_dtype;
821 bool unsupported_var_dspace;
822 bool unsupported_attr_dspace;
823 bool unsupported_var_attr_dspace;
825 std::set<std::string> dimnamelist;
827 std::map<std::string, hsize_t> dimname_to_dimsize;
830 std::map<std::string, bool> dimname_to_unlimited;
840 std::string ignored_msg;
847 GMFile(
const char*path, hid_t file_id, H5GCFProduct product, GMPattern gproduct_pattern);
850 H5GCFProduct getProductType()
const
855 const std::vector<GMCVar *>&getCVars()
const
860 const std::vector<GMSPVar *>&getSPVars()
const
866 virtual void Retrieve_H5_Info(
const char *path, hid_t file_id,
bool include_attr);
928 bool Is_Hybrid_EOS5();
929 void Handle_Hybrid_EOS5();
949 return check_ignored;
959 bool Check_And_Update_New_GPM_L3();
960 void Remove_OMPSNPP_InputPointers();
961 void Add_Dim_Name_GPM() ;
962 void Add_Dim_Name_Mea_SeaWiFS() ;
963 void Handle_UseDimscale_Var_Dim_Names_Mea_SeaWiFS_Ozone(
Var*) ;
964 void Add_UseDimscale_Var_Dim_Names_Mea_SeaWiFS_Ozone(
Var *,
Attribute*) ;
966 void Add_Dim_Name_Mea_Ozonel3z() ;
967 bool check_cv(
const std::string & varname)
const;
969 void Add_Dim_Name_Aqu_L3() ;
970 void Add_Dim_Name_OBPG_L3() ;
971 void Add_Dim_Name_OSMAPL2S() ;
972 void Add_Dim_Name_ACOS_L2S_OCO2_L1B() ;
974 void Add_Dim_Name_General_Product() ;
975 void Check_General_Product_Pattern() ;
976 bool Check_Dimscale_General_Product_Pattern() ;
977 bool Check_LatLon2D_General_Product_Pattern() ;
978 bool Check_LatLon2D_General_Product_Pattern_Name_Size(
const std::string& latname,
const std::string& lonname)
980 bool Check_LatLon1D_General_Product_Pattern() ;
981 bool Check_LatLon1D_General_Product_Pattern_Name_Size(
const std::string& latname,
const std::string& lonname)
984 bool Check_LatLon_With_Coordinate_Attr_General_Product_Pattern() ;
985 void Build_lat1D_latlon_candidate(
Var*,
const std::vector<Var*>&);
986 void Build_latg1D_latlon_candidate(
Var*,
const std::vector<Var*>&);
987 void Build_unique_latlon_candidate();
988 void Add_Dim_Name_LatLon1D_Or_CoordAttr_General_Product() ;
989 void Add_Dim_Name_LatLon2D_General_Product() ;
990 void Add_Dim_Name_Dimscale_General_Product() ;
991 void Handle_UseDimscale_Var_Dim_Names_General_Product(
Var*) ;
992 void Add_UseDimscale_Var_Dim_Names_General_Product(
Var*,
Attribute*) ;
995 void Update_M2DLatLon_Dimscale_CVs() ;
996 bool Check_1DGeolocation_Dimscale() ;
997 void Obtain_1DLatLon_CVs(std::vector<GMCVar*> &cvar_1dlat, std::vector<GMCVar*> &cvar_1dlon);
998 void Obtain_2DLatLon_Vars(std::vector<Var*> &var_2dlat, std::vector<Var*> &var_2dlon,
999 std::map<std::string, int>&latlon2d_path_to_index);
1000 void Obtain_2DLLVars_With_Dims_not_1DLLCVars(std::vector<Var*> &var_2dlat, std::vector<Var*> &var_2dlon,
1001 std::vector<GMCVar*> &cvar_1dlat, std::vector<GMCVar*> &cvar_1dlon, std::map<std::string, int>&latlon2d_path_to_index);
1002 void Obtain_2DLLCVar_Candidate(std::vector<Var*> &var_2dlat, std::vector<Var*> &var_2dlon,
1003 std::map<std::string, int>&latlon2d_path_to_index) ;
1004 void Obtain_unique_2dCV(std::vector<Var*>&, std::map<std::string, int>&);
1005 void Remove_2DLLCVar_Final_Candidate_from_Vars(std::vector<int>&) ;
1007 void Handle_CVar_GPM_L1() ;
1008 void Handle_CVar_GPM_L3() ;
1009 void Handle_CVar_Mea_SeaWiFS() ;
1010 void Handle_CVar_Aqu_L3() ;
1011 void Handle_CVar_OBPG_L3() ;
1012 void Handle_CVar_OSMAPL2S() ;
1013 void Handle_CVar_Mea_Ozone() ;
1014 void Handle_SpVar_ACOS_OCO2() ;
1015 void Handle_CVar_Dimscale_General_Product() ;
1016 void Handle_CVar_LatLon2D_General_Product() ;
1017 void Handle_CVar_LatLon1D_General_Product() ;
1018 void Handle_CVar_LatLon_General_Product() ;
1020 void Adjust_Mea_Ozone_Obj_Name() ;
1021 void Adjust_GPM_L3_Obj_Name() ;
1023 void Handle_GMCVar_NameClashing(std::set<std::string> &) ;
1024 void Handle_GMCVar_AttrNameClashing() ;
1025 void Handle_GMSPVar_NameClashing(std::set<std::string> &) ;
1026 void Handle_GMSPVar_AttrNameClashing() ;
1027 template<
typename T>
void GMHandle_General_NameClashing(std::set<std::string>&objnameset, std::vector<T*>& objvec)
1030 virtual std::string get_CF_string(std::string s);
1033 bool Check_Var_2D_CVars(
Var*) ;
1034 bool Flatten_VarPath_In_Coordinates_Attr(
Var*) ;
1036 void Handle_LatLon_With_CoordinateAttr_Coor_Attr() ;
1037 bool Coord_Match_LatLon_NameSize(
const std::string & coord_values) ;
1038 bool Coord_Match_LatLon_NameSize_Same_Group(
const std::string & coord_values,
const std::string &var_path) ;
1039 void Add_VarPath_In_Coordinates_Attr(
Var*,
const std::string &);
1042 void Handle_GPM_l1_Coor_Attr() ;
1043 void Correct_GPM_L1_LatLon_units(
Var *var,
const std::string unit_value) ;
1044 void Add_GPM_Attrs() ;
1046 void Add_Aqu_Attrs() ;
1047 void Add_SeaWiFS_Attrs() ;
1048 void Create_Missing_CV(
GMCVar*,
const std::string &) ;
1050 bool Is_netCDF_Dimension(
Var *var) ;
1052 virtual void Gen_Unsupported_Dtype_Info(
bool);
1053 virtual void Gen_VarAttr_Unsupported_Dtype_Info() ;
1054 void Gen_GM_VarAttr_Unsupported_Dtype_Info();
1055 virtual void Gen_Unsupported_Dspace_Info() ;
1056 void Handle_GM_Unsupported_Dtype(
bool) ;
1057 void Handle_GM_Unsupported_Dspace(
bool) ;
1059 bool Remove_EOS5_Strings(std::string &);
1060 bool Remove_EOS5_Strings_NonEOS_Fields (std::string &);
1061 void release_standalone_GMCVar_vector(std::vector<GMCVar*> &tempgc_vars);
1064 H5GCFProduct product_type;
1065 GMPattern gproduct_pattern;
1066 std::vector<GMCVar *> cvars;
1067 std::vector<GMSPVar *> spvars;
1068 std::string gp_latname;
1069 std::string gp_lonname;
1070 std::set<std::string> grp_cv_paths;
1071 std::vector<struct Name_Size_2Pairs> latloncv_candidate_pairs;
1077 bool have_nc4_non_coord;
1085 point_lower(0.0), point_upper(0.0), point_left(0.0), point_right(0.0),
1086 eos5_pixelreg(HE5_HDFE_CENTER),
1087 eos5_origin(HE5_HDFE_GD_UL),
1088 eos5_projcode(HE5_GCTP_GEO),
1089 zone(-1), sphere(0),
1091 xdimsize(0), ydimsize(0),
1092 has_nolatlon(
true), has_1dlatlon(
false), has_2dlatlon(
false), has_g2dlatlon(
false)
1094 std::fill_n(param, 13, 0);
1102 void Update_Dimnamelist();
1109 EOS5GridPRType eos5_pixelreg;
1110 EOS5GridOriginType eos5_origin;
1111 EOS5GridPCType eos5_projcode;
1117 std::vector<std::string> dimnames;
1118 std::set<std::string> vardimnames;
1119 std::map<std::string, hsize_t> dimnames_to_dimsizes;
1122 std::map<std::string, bool> dimnames_to_unlimited;
1124 std::map<hsize_t, std::string> dimsizes_to_dimnames;
1127 std::map<std::string, std::string> dnames_to_1dvnames;
1143 addeddimindex(0), has_nolatlon(
true), has_1dlatlon(
false), has_2dlatlon(
false), has_g2dlatlon(
false)
1153 std::vector<std::string> dimnames;
1154 std::set<std::string> vardimnames;
1155 std::map<std::string, hsize_t> dimnames_to_dimsizes;
1158 std::map<std::string, bool> dimnames_to_unlimited;
1160 std::map<hsize_t, std::string> dimsizes_to_dimnames;
1163 std::map<std::string, std::string> dnames_to_geo1dvnames;
1187 std::vector<std::string> dimnames;
1188 std::set<std::string> vardimnames;
1189 std::map<std::string, hsize_t> dimnames_to_dimsizes;
1191 std::map<std::string, bool> dimnames_to_unlimited;
1193 std::map<hsize_t, std::string> dimsizes_to_dimnames;
1196 std::map<std::string, std::string> dnames_to_1dvnames;
1205 EOS5File(
const char*he5_path, hid_t file_id) :
1206 File(he5_path, file_id), iscoard(
false), grids_multi_latloncvs(
false), isaura(
false), aura_name(NOTAURA),
1221 virtual void Retrieve_H5_Info(
const char *path, hid_t file_id,
bool include_attr);
1301 bool Have_EOS5_Grids() {
1302 return (this->eos5cfgrids.size()!=0);
1306 return check_ignored;
1315 void Adjust_H5_Attr_Value(
Attribute *attr) ;
1317 void Adjust_EOS5Dim_List(std::vector<HE5Dim>&) ;
1318 void Condense_EOS5Dim_List(std::vector<HE5Dim>&) ;
1319 void Remove_NegativeSizeDims(std::vector<HE5Dim>&) ;
1320 void Adjust_EOS5DimSize_List(std::vector<HE5Dim>&,
const std::vector<HE5Var>&,
const EOS5Type,
const std::string & eos5objname);
1321 void Adjust_EOS5VarDim_Info(std::vector<HE5Dim>&, std::vector<HE5Dim>&,
const std::string &, EOS5Type) ;
1323 void EOS5Handle_nonlatlon_dimcvars(std::vector<HE5Var> & eos5varlist, EOS5Type, std::string groupname,
1324 std::map<std::string, std::string>& dnamesgeo1dvnames) ;
1325 template<
class T>
void EOS5SwathGrid_Set_LatLon_Flags(T* eos5gridswath, std::vector<HE5Var>& eos5varlist)
1328 void Obtain_Var_NewName(
Var*) ;
1329 EOS5Type Get_Var_EOS5_Type(
Var*) ;
1332 template<
class T>
bool Set_Var_Dims(T*,
Var*, std::vector<HE5Var>&,
const std::string&,
int, EOS5Type) ;
1333 template<
class T>
void Create_Unique_DimName(T*, std::set<std::string>&,
Dimension *,
int, EOS5Type) ;
1335 template<
class T>
bool Check_All_DimNames(T*, std::string &, hsize_t);
1336 std::string Obtain_Var_EOS5Type_GroupName(
Var*, EOS5Type) ;
1337 int Check_EOS5Swath_FieldType(
Var*) ;
1338 void Get_Unique_Name(std::set<std::string>&, std::string&) ;
1340 template<
class T> std::string Create_Unique_FakeDimName(T*, EOS5Type) ;
1341 template<
class T>
void Set_NonParse_Var_Dims(T*,
Var*, std::map<hsize_t, std::string>&,
int, EOS5Type) ;
1343 void Handle_Grid_CVar(
bool) ;
1344 void Handle_Augmented_Grid_CVar() ;
1345 template<
class T>
void Handle_Single_Augment_CVar(T*, EOS5Type) ;
1347 void Handle_Multi_Nonaugment_Grid_CVar() ;
1348 void Handle_Single_Nonaugment_Grid_CVar(
EOS5CFGrid*) ;
1349 bool Handle_Single_Nonaugment_Grid_CVar_OwnLatLon(
EOS5CFGrid *, std::set<std::string>&) ;
1350 bool Handle_Single_Nonaugment_Grid_CVar_EOS5LatLon(
EOS5CFGrid *, std::set<std::string>&) ;
1351 void Handle_NonLatLon_Grid_CVar(
EOS5CFGrid *, std::set<std::string>&) ;
1352 void Remove_MultiDim_LatLon_EOS5CFGrid() ;
1355 void Handle_Swath_CVar(
bool) ;
1356 void Handle_Single_1DLatLon_Swath_CVar(
EOS5CFSwath *cfswath,
bool is_augmented) ;
1357 void Handle_Single_2DLatLon_Swath_CVar(
EOS5CFSwath *cfswath,
bool is_augmented) ;
1358 void Handle_NonLatLon_Swath_CVar(
EOS5CFSwath *cfswath, std::set<std::string>& tempvardimnamelist) ;
1359 void Handle_Special_NonLatLon_Swath_CVar(
EOS5CFSwath *cfswath, std::set<std::string>&tempvardimnamelist) ;
1361 void Handle_Za_CVar(
bool) ;
1363 bool Check_Augmentation_Status() ;
1368 template<
class T>
bool Check_Augmented_Var_Candidate(T*,
Var*, EOS5Type) ;
1370 template<
class T>
void Adjust_Per_Var_Dim_NewName_Before_Flattening(T*,
bool,
int,
int,
int) ;
1371 void Adjust_SharedLatLon_Grid_Var_Dim_Name() ;
1373 void Adjust_Aura_Attr_Name() ;
1374 void Adjust_Aura_Attr_Value() ;
1375 void Handle_EOS5CVar_Unit_Attr() ;
1376 void Add_EOS5_Grid_CF_Attr() ;
1377 void Handle_Aura_Special_Attr() ;
1379 virtual std::string get_CF_string(std::string s);
1382 void Handle_EOS5CVar_NameClashing(std::set<std::string> &) ;
1383 void Handle_EOS5CVar_AttrNameClashing() ;
1384 template<
typename T>
void EOS5Handle_General_NameClashing(std::set<std::string>&objnameset, std::vector<T*>& objvec)
1386 template<
typename T>
void Create_Missing_CV(T*,
EOS5CVar*,
const std::string &, EOS5Type,
int) ;
1387 void Create_Added_Var_NewName_FullPath(EOS5Type,
const std::string&,
const std::string&, std::string &, std::string &) ;
1389 void Handle_EOS5_Unsupported_Dtype(
bool) ;
1390 void Handle_EOS5_Unsupported_Dspace(
bool) ;
1392 virtual void Gen_Unsupported_Dtype_Info(
bool);
1393 virtual void Gen_VarAttr_Unsupported_Dtype_Info() ;
1394 void Gen_EOS5_VarAttr_Unsupported_Dtype_Info() ;
1396 virtual void Gen_Unsupported_Dspace_Info() ;
1399 std::vector<EOS5CVar *> cvars;
1400 std::vector<EOS5CFGrid *> eos5cfgrids;
1401 std::vector<EOS5CFSwath *> eos5cfswaths;
1402 std::vector<EOS5CFZa *> eos5cfzas;
1403 std::map<std::string, std::string> eos5_to_cf_attr_map;
1405 bool grids_multi_latloncvs;
1407 EOS5AuraName aura_name;
1409 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.
virtual void Handle_Grid_Mapping_Vars()
Handle Grid Mapping Vars.
void Set_COARDS_Status()
Set COARDS flag.
virtual 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.
virtual const std::string & Get_Ignored_Msg()
Obtain the message that contains the ignored object info.
virtual void Handle_SpVar_DMR()
Handle special variables and attributes for HDF-EOS5 files(for DMR)
void Handle_Obj_NameClashing(bool)
Handle the object name clashing for HDF-EOS5 products.
virtual void Retrieve_H5_CVar_Supported_Attr_Values()
Retrieve coordinate variable attributes.
virtual bool Have_Grid_Mapping_Attrs()
Check if having Grid Mapping Attrs.
virtual void Adjust_Obj_Name()
This method is a no-op operation. Leave here since the method in the base class is pure virtual.
virtual void Handle_SpVar()
Handle special variables for HDF-EOS5 files.
virtual 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.
virtual void Handle_DimNameClashing()
virtual void Handle_CVar()
Handle coordinate variable for HDF-EOS5 files.
virtual void Handle_SpVar_Attr()
Handle special variables for HDF-EOS5 files.
virtual void Retrieve_H5_Supported_Attr_Values()
Retrieve attribute values for the supported HDF5 datatypes for HDF-EOS5 products.
virtual 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.
virtual 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.
virtual void Handle_Unsupported_Others(bool)
Handle other unmapped objects/attributes for HDF-EOS5 products.
virtual void Flatten_Obj_Name(bool include_attr)
Flatten the object name for HDF-EOS5 files.
virtual void Adjust_Dim_Name()
Adjust the dimension name for HDF-EOS5 products.
virtual 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.
virtual bool Get_IgnoredInfo_Flag()
Obtain the flag to see if ignored objects should be generated.
const std::vector< EOS5CVar * > & getCVars() const
Obtain coordinate variables for HDF-EOS5 products.
virtual 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.
std::map< hsize_t, std::string > dimsize_to_fakedimname
Handle added dimension names.
virtual void Handle_Grid_Mapping_Vars()
Handle Grid Mapping Vars.
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.
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.
const std::vector< Group * > & getGroups() const
Public interface to obtain all the group info.
virtual void Handle_CVar()=0
Handle coordinate variables.
virtual void Adjust_Dim_Name()=0
Adjust dimension names based on different products.
const std::string & getPath() const
Obtain the path of the file.
virtual void Adjust_Obj_Name()=0
Adjust object names based on different products.
const std::vector< Var * > & getVars() const
Public interface to obtain information of all variables.
virtual void Handle_SpVar_DMR()=0
Handle Special variable and attributes for DMR.
virtual void Handle_Unsupported_Dtype(bool)
Handle unsupported HDF5 datatypes.
virtual const std::string & Get_Ignored_Msg()=0
Obtain the message that contains the ignored object 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.
virtual void Handle_Unsupported_Dtype(bool)
Handle unsupported HDF5 datatypes for general HDF5 products.
virtual void Adjust_Obj_Name()
Adjust object names based on different general NASA HDF5 products.
virtual void Retrieve_H5_CVar_Supported_Attr_Values()
Retrieve coordinate variable attributes.
void Add_Path_Coord_Attr()
Update the coordinate attribute to include path and also flatten.
virtual bool Have_Grid_Mapping_Attrs()
Check if having Grid Mapping Attrs.
virtual 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.
virtual void Handle_SpVar_DMR()
void Remove_Unused_FakeDimVars()
Unsupported datatype array may generate FakeDim. Remove them.
void Update_Product_Type()
Update "product type" attributes for general HDF5 products.
virtual 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.
virtual void Handle_SpVar()
Handle special variables for general NASA HDF5 products.
virtual bool Get_IgnoredInfo_Flag()
Obtain ignored info. flag.
void Adjust_H5_Attr_Value(Attribute *attr)
Adjust attribute values for general HDF5 products.
virtual void Handle_Unsupported_Dspace(bool)
Handle unsupported HDF5 dataspaces for general HDF5 products.
virtual void Handle_SpVar_Attr()
Handle special variable attributes for general NASA HDF5 products.
virtual void Handle_Unsupported_Others(bool)
Handle other unmapped objects/attributes for general HDF5 products.
void Remove_Unneeded_Objects()
Remove unneeded objects.
virtual const std::string & Get_Ignored_Msg()
Get the message that contains the ignored obj. info.
void Add_Dim_Name()
Add dimension name.
virtual void Flatten_Obj_Name(bool include_attr)
Flatten the object name for general NASA HDF5 products.
virtual void Handle_Grid_Mapping_Vars()
Handle Grid Mapping Vars.
virtual void Handle_DimNameClashing()
virtual 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.
virtual void Retrieve_H5_Supported_Attr_Values()
Retrieve attribute values for the supported HDF5 datatypes for general HDF5 products.
virtual void Add_Supplement_Attrs(bool)
Add supplemental attributes such as fullpath and original name for general NASA HDF5 products.
virtual 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.