72 static void close_fileid(int32 sdfd,int32 file_id,int32 gridfd,int32 swathfd,
bool pass_fileid_key);
74 static std::string escattr_fvalue(std::string s);
78 static void Split (
const char *s,
int len,
char sep,
79 std::vector < std::string > &names);
82 static void Split (
const char *sz,
char sep,
83 std::vector < std::string > &names);
88 static bool insert_map(std::map<std::string,std::string>& m, std::string key, std::string val);
94 static void gen_unique_name(std::string &str,std::set<std::string>& namelist,
int&clash_index);
98 static void Handle_NameClashing(std::vector<std::string>&newobjnamelist,std::set<std::string>&objnameset);
101 static std::string
print_attr(int32,
int,
void*);
111 template <
typename T>
static void LatLon2DSubset (T* outlatlon,
int ydim,
int xdim, T* latlon,
const int32 * offset,
const int32 * count,
const int32 * step);
124#ifdef USE_HDFEOS2_LIB
137 static bool change_data_type(libdap::DAS & das, SOType scaletype,
const std::string & new_field_name);
143 static bool is_special_value(int32 dtype,
float fillvalue,
float realvalue);
146 static int check_geofile_dimmap(
const std::string & geofilename);
151 static bool is_modis_dimmap_nonll_field(std::string & fieldname);
154 static void obtain_dimmap_info(
const std::string& filename, HDFEOS2::Dataset*dataset,std::vector<struct dimmap_entry>& dimmaps, std::string & modis_geofilename,
bool &geofile_nas_dimmap);
159 static void add_scale_offset_attrs(libdap::AttrTable* at,
const std::string& s_type,
float svalue_f,
double svalue_d,
bool add_offset_found,
160 const std::string& o_type,
float ovalue_f,
double ovalue_d);
162 static void add_scale_str_offset_attrs(libdap::AttrTable* at,
const std::string& s_type,
const std::string& s_value_str,
bool add_offset_found,
163 const std::string& o_type,
float ovalue_f,
double ovalue_d);
168 static void handle_modis_special_attrs_disable_scale_comp(libdap::AttrTable *at,
const string &filename,
bool is_grid,
const std::string &newfname, SOType scaletype);
173 static void handle_modis_special_attrs(libdap::AttrTable *at,
const std::string &filename,
bool is_grid,
const std::string & newfname, SOType scaletype,
bool gridname_change_valid_range,
bool changedtype,
bool &change_fvtype);
176 static void handle_modis_vip_special_attrs(
const std::string& valid_range_value,
const std::string& scale_factor_value,
float& valid_min,
float & valid_max);
179 static void handle_amsr_attrs(libdap::AttrTable *at);
183 static void obtain_grid_latlon_dim_info(
const HDFEOS2::GridDataset*,
string &,int32 &,
string &,int32 &);
187 static void add_cf_grid_mapping_attr(libdap::DAS &das,
const HDFEOS2::GridDataset*gdset,
const string& cf_projection,
188 const string & dim0name,int32 dim0size,
const string &dim1name,int32 dim1size);
191 static void add_cf_grid_cvs(libdap::DDS & dds,
const HDFEOS2::GridDataset *gdset);
194 static void add_cf_grid_cv_attrs(libdap::DAS &das,
const HDFEOS2::GridDataset *gdset);
200 static void check_obpg_global_attrs(
HDFSP::File*f,std::string & scaling,
float & slope,
bool &global_slope_flag,
float & intercept,
bool & global_intercept_flag);
205 static void add_obpg_special_attrs(
const HDFSP::File*f,libdap::DAS &das,
const HDFSP::SDField* spsds,
const std::string & scaling,
float&slope,
const bool &global_slope_flag,
float& intercept,
const bool &global_intercept_flag);
209 static void handle_otherhdf_special_attrs(
const HDFSP::File *f, libdap::DAS &das);
212 static void add_missing_cf_attrs(
const HDFSP::File*f,libdap::DAS &das);
215 static void handle_merra_ceres_attrs_with_bes_keys(
const HDFSP::File*f, libdap::DAS &das,
const std::string& filename);
218 static void handle_vdata_attrs_with_desc_key(
const HDFSP::File*f,libdap::DAS &das);
221 static void map_eos2_objects_attrs(libdap::DAS &das,
const string &filename);
222 static void map_eos2_one_object_attrs_wrapper(libdap::DAS &das,int32 file_id,int32 vgroup_id,
const string &vgroup_name,
bool is_grid);
223 static void map_eos2_one_object_attrs(libdap::DAS &das,int32 file_id,int32 obj_attr_group_id,
const string &vgroup_name);
226 static void parser_trmm_v7_gridheader(
const std:: vector<char>&value,
int& latsize,
int&lonsize,
float& lat_start,
float& lon_start,
float& lat_res,
float& lon_res,
bool check_reg_orig);
230 static void rev_str(
char *str,
int len);
233 static int int_to_str(
int,
char str[],
int);
236 static void dtoa(
double,
char *,
int);
239 static std::string get_double_str(
double,
int,
int);
242 static std::string get_int_str(
int);
246 static ssize_t read_vector_from_file(
int fd,
vector<double> &,
size_t);
249 static ssize_t read_buffer_from_file(
int fd,
void*buf,
size_t);
250 static std::string obtain_cache_fname(
const std::string & fprefix,
const std::string & fname,
const std::string &vname);
251 static size_t obtain_dds_cache_size(
const HDFSP::File*);
252 static void write_sp_sds_dds_cache(
const HDFSP::File*,FILE*,
size_t,
const std::string & fname);
253 static void read_sp_sds_dds_cache(FILE*,libdap::DDS * dds_ptr,
const std::string &filename,
const std::string &hdf_filename);