//************************************************
//
// 文 件 名 : DFCFHdf5Reader.cpp
// 功能描述 : HDF5文件读取实现文件,该文件包含读取HDF5属性、数据的所有方法。具体方法包括:
// 判断文件是否为HDF5文件的方法、打开HDF5文件的方法、获取全局属性个数的方法、
// 获取全局属性值的方法、获取数据集个数的方法、根据数据集索引号获取数据集名称
// 的方法、获取数据集维数和维数规模的方法、获取数据集属性个数的方法、获取数据
// 集属性值的方法、读取指定数据集所有数据的方法、读取指定数据集范围数据的方法、
// 读取指定数据集范围数据且可设置步伐的方法、读取表格数据总记录数的方法、读取
// 表格数据总列数的方法、读取表格数据列名称的方法、读取表格数据指定列的所有数
// 据的方法、读取表格数据指定列的范围数据的方法。
// 创建日期 : 2011年06月6日
// 作 者 : zxl
// 修改记录 :
//*************************************************
#include "DFCFHdf5Reader.h"
DFCFHdf5Reader::DFCFHdf5Reader()
{
InitAllBool();
}
DFCFHdf5Reader::~DFCFHdf5Reader(void)
{
CloseFile();
}
bool DFCFHdf5Reader::IsHdf5File(const char* i_chFileName)
{
if (NULL == i_chFileName)
{
////int nErrCode = H5READ_ISH5FILE_ARGERR;
int nLine = __LINE__;
string strFileName = __FILE__;
string strErrInfo = "判断是否为HDF5文件参数异常";
//////DoError(nErrCode,strFileName,nLine,strErrInfo);
return false;
}
htri_t ht = 0;
try
{
ht = H5Fis_hdf5(i_chFileName);
}
catch(Exception e)
{
string strErrInfo=e.getDetailMsg()+'\n'+e.getCDetailMsg();
return false;
}
catch (...)
{
////int nErrCode = H5READ_ISH5FILE_FILEERR;
int nLine = __LINE__;
string strFileName = __FILE__;
string strErrInfo = "判断是否为HDF5文件方法异常";
////DoError(nErrCode,strFileName,nLine,strErrInfo);
return false;
}
return ht > 0 ? true : false;
}
bool DFCFHdf5Reader::OpenFile(const char* i_chFileName)
{
if (NULL == i_chFileName)
{
////int nErrCode = ////int nErrCode = H5READ;
int nLine = __LINE__;
string strFileName = __FILE__;
string strErrInfo = "HDF5打开文件参数异常";
////DoError(nErrCode,strFileName,nLine,strErrInfo);
return false;
}
try
{
m_file.openFile(i_chFileName, H5F_ACC_RDONLY, H5P_DEFAULT);
}
catch(Exception e)
{
string strErrInfo=e.getDetailMsg()+'\n'+e.getCDetailMsg();
return false;
}
catch (...)
{
////int nErrCode = H5READ_OPENFILE_FILEERR;
int nLine = __LINE__;
string strFileName = __FILE__;
string strErrInfo = "HDF5文件打开错误异常";
////DoError(nErrCode,strFileName,nLine,strErrInfo);
return false;
}
m_fileOpenState = true;
return true;
}
bool DFCFHdf5Reader::OpenFile(const char* i_chFileName,const char* i_chGroupName)
{
if (NULL == i_chFileName)
{
// //int nErrCode = ////int nErrCode = H5READ;
int nLine = __LINE__;
string strFileName = __FILE__;
string strErrInfo = "HDF5打开文件参数异常";
////DoError(nErrCode,strFileName,nLine,strErrInfo);
return false;
}
if (NULL == i_chGroupName) return false;
try
{
m_file.openFile(i_chFileName, H5F_ACC_RDONLY, H5P_DEFAULT);
}
catch(Exception e)
{
string strErrInfo=e.getDetailMsg()+'\n'+e.getCDetailMsg();
return false;
}
catch (...)
{
// //int nErrCode = H5READ_OPENFILE_FILEERR;
int nLine = __LINE__;
string strFileName = __FILE__;
string strErrInfo = "HDF5文件打开错误异常";
////DoError(nErrCode,strFileName,nLine,strErrInfo);
return false;
}
m_fileOpenState = true;
OpenGroupByName(i_chGroupName);
return true;
}
bool DFCFHdf5Reader::CheckHdfAttrExist( const char* i_chAttriName)
{
Group grp = m_file.openGroup("/");
int num = grp.getNumAttrs();
H5std_string name="";
Attribute att ;
for(int i=0;i<num;i++)
{
att = grp.openAttribute(i);
name = att.getName();//此函数的返回值为string类型,需要在realse下运行
if(name == i_chAttriName)
{
att.close();
grp.close();
return true;
}
}
if(att.getId()>0) att.close();
grp.close();
return false;
}
bool DFCFHdf5Reader::CheckHdfSDSExist( const char* i_chDataSetName)
{
if (!m_fileOpenState)
{
//int nErrCode = H5READ_GETDSTDIMS_ARGERR;
int nLine = __LINE__;
string strFileName = __FILE__;
string strErrInfo = "HDF5文件打开异常";
////DoError(nErrCode,strFileName,nLine,strErrInfo);
return false;
}
if (NULL == i_chDataSetName)
{
//int nErrCode = H5READ_GETDSTDIMS_ARGERR;
int nLine = __LINE__;
string strFileName = __FILE__;
string strErrInfo = "获取数据集维数规模,数据集名称参数异常";
////DoError(nErrCode,strFileName,nLine,strErrInfo);
return false;
}
hsize_t dstnum = m_file.getNumObjs();
string hdf5DstName;
for(int i=0;i<(int)dstnum;i++)
{
hdf5DstName = m_file.getObjnameByIdx(i);
if(hdf5DstName==i_chDataSetName)
{
return true;
}
}
return false;
}
bool DFCFHdf5Reader::CheckHdfSDSExist(const char* i_chGroupName,const char* i_chDataSetName)
{
if (!m_fileOpenState)
{
//int nErrCode = H5READ_GETDSTDIMS_ARGERR;
int nLine = __LINE__;
string strFileName = __FILE__;
string strErrInfo = "HDF5文件打开异常";
////DoError(nErrCode,strFileName,nLine,strErrInfo);
return false;
}
if (NULL == i_chDataSetName)
{
//int nErrCode = H5READ_GETDSTDIMS_ARGERR;
int nLine = __LINE__;
string strFileName = __FILE__;
string strErrInfo = "获取数据集维数规模,数据集名称参数异常";
////DoError(nErrCode,strFileName,nLine,strErrInfo);
return false;
}
hsize_t dstnum=m_group.getNumObjs();
string hdf5DstName;
for(int i=0;i<(int)dstnum;i++)
{
hdf5DstName = m_group.getObjnameByIdx(i);
if(hdf5DstName==i_chDataSetName)
{
return true;
}
}
return false;
}
bool DFCFHdf5Reader::CheckHdfSDSAttrExist( const char* i_chDataSetName,const char* i_chAttriName )
{
DataSet dst = m_file.openDataSet(i_chDataSetName);
int num = dst.getNumAttrs();
H5std_string name="";
Attribute att ;
for(int i=0;i<num;i++)
{
att = dst.openAttribute(i);
name = att.getName();
if(name == i_chAttriName)
{
att.close();
dst.close();
return true;
}
}
if(att.getId()>0) att.close();
dst.close();
return false;
}
int DFCFHdf5Reader::GetPublicAttrNum(const char* i_chGroupName)
{
if (!m_fileOpenState)
{
//int nErrCode = H5READ_GETPUBATTNUM_ARGERR;
int nLine = __LINE__;
string strFileName = __FILE__;
string strErrInfo = "HDF5打开文件状态异常";
////DoError(nErrCode,strFileName,nLine,strErrInfo);
return -1;
}
if (NULL == i_chGroupName)
{
//int nErrCode = H5READ_GETPUBATTNUM_ARGERR;
int nLine = __LINE__;
string strFileName = __FILE__;
string strErrInfo = "获取全局属性个数方法参数异常";
////DoError(nErrCode,strFileName,nLine,strErrInfo);
return -1;
}
OpenGroupByName(i_chGroupName);
int iValue = 0;
try
{
iValue = m_group.getNumAttrs();
m_group.close();
}
catch (...)
{
//int nErrCode = H5READ_GETPUBATTNUM_READERR;
int nLine = __LINE__;
string strFileName = __FILE__;
string strErrInfo = "获取全局属性个数异常";
////DoError(nErrCode,strFileName,nLine,strErrInfo);
return -1;
}
m_fileGroupOpenState = false;
return iValue;
}
void DFCFHdf5Reader::getPublicAttrDataType(const char* i_chGroupName,const char* i_chAttrName,int* o_DataType)
{
if (!m_fileOpenState)
{
//int nErrCode = H5READ_GETPUBATTVAL_ARGERR;
int nLine = __LINE__;
string strFileName = __FILE__;
string strErrInfo = "HDF5打开状态异常";
////DoError(nErrCode,strFileName,nLine,strErrInfo);
return;
}
if (NULL == i_chGroupName)
{
//int nErrCode = H5READ_GETPUBATTVAL_ARGERR;
int nLine = __LINE__;
string strFileName = __FILE__;
string strErrInfo = "获取全局属性值方法,群组名称参数异常";
////DoError(nErrCode,strFileName,nLine,strErrInfo);
return;
}
OpenGroupByName(i_chGr
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
HDF5 HDF4 NC 格式数据解析操作类 (272个子文件)
DFCFHdf5Reader.cpp 48KB
netcdf.cpp 41KB
DFCFHdf4Reader.cpp 34KB
DFCFNetcdfReader.cpp 9KB
ncvalues.cpp 7KB
HdfDemo.cpp 6KB
hdf5ddll.dll 6.24MB
hdf5dll.dll 1.8MB
hdf5dll.dll 1.8MB
hd425m.dll 438KB
hd425m.dll 438KB
netcdfd.dll 432KB
hdf5_cppddll.dll 349KB
hdf5_cppdll.dll 214KB
hdf5_cppdll.dll 214KB
netcdf.dll 187KB
netcdf.dll 187KB
hdf5_hlddll.dll 142KB
szlibdll.dll 104KB
hm425m.dll 90KB
hm425m.dll 90KB
hdf5_hldll.dll 89KB
hdf5_hldll.dll 89KB
zlib1.dll 60KB
hdf5_hl_cppddll.dll 18KB
hproto_fortran.h 73KB
H5Tpkg.h 70KB
H5overflow.h 69KB
hproto.h 68KB
H5private.h 65KB
zlib.h 65KB
hdfi.h 53KB
H5Einit.h 50KB
jpeglib.h 46KB
H5Cprivate.h 43KB
H5Cpkg.h 43KB
H5HFpkg.h 40KB
H5Dpkg.h 36KB
hfile.h 35KB
netcdf.h 31KB
H5Oprivate.h 30KB
crc32.h 30KB
H5Tpublic.h 27KB
H5Gpkg.h 26KB
H5Opkg.h 24KB
H5Fprivate.h 23KB
bitvect.h 23KB
mfhdf.h 22KB
herr.h 22KB
H5Ppublic.h 21KB
local_nc.h 21KB
H5pubconf.h 20KB
DFCFHdf5Reader.h 20KB
H5ACpublic.h 20KB
H5Epubgen.h 19KB
netcdfcpp.h 19KB
H5FLprivate.h 18KB
H5Oshared.h 18KB
H5ACprivate.h 17KB
H5Fpkg.h 16KB
jpegint.h 16KB
tbbt.h 16KB
netcdf.h 15KB
H5Vprivate.h 15KB
H5B2pkg.h 15KB
DFCFHdf4Reader.h 15KB
mfan.h 14KB
H5Sprivate.h 14KB
jerror.h 14KB
H5Apkg.h 13KB
H5LTpublic.h 13KB
H5Spkg.h 13KB
hchunks.h 13KB
H5ACpkg.h 13KB
jmorecfg.h 13KB
H5version.h 12KB
deflate.h 12KB
H5FDpublic.h 12KB
H5Edefin.h 12KB
atom.h 11KB
H5FSpkg.h 11KB
hntdefs.h 11KB
hlimits.h 11KB
H5FSprivate.h 11KB
H5Zpublic.h 11KB
H5SMpkg.h 11KB
H5public.h 10KB
ncvalues.h 10KB
H5Gprivate.h 10KB
H5Ppkg.h 9KB
zconf.h 9KB
zconf.in.h 9KB
H5Opublic.h 9KB
dfi.h 9KB
H5Lpublic.h 9KB
H5Dprivate.h 9KB
H5Epublic.h 9KB
hconv.h 9KB
H5PacketTable.h 9KB
H5TBpublic.h 8KB
共 272 条
- 1
- 2
- 3
zxl0726
- 粉丝: 26
- 资源: 86
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
前往页