C语言对HDF文件数据集和属性的读写

C语言对HDF文件数据集和属性的读写

ID:47486644

大小:18.34 KB

页数:4页

时间:2020-01-12

C语言对HDF文件数据集和属性的读写_第1页
C语言对HDF文件数据集和属性的读写_第2页
C语言对HDF文件数据集和属性的读写_第3页
C语言对HDF文件数据集和属性的读写_第4页
资源描述:

《C语言对HDF文件数据集和属性的读写》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、以三维数据读写为例打开,读取空间属性、维度,数据集属性,文件属性,数据集的数据;//写入txt文件(动态定义数组——用指针),写入DAT文件(可以用ENVI打开查看图像),写入HDF文件写入HDF文件属性、数据属性、空间属性,数据压缩。hid_tfile_id,space_id,dset_id;hsize_tdims[3]={0,0,0};intndims=0;intstatus;intcol=0;introw=0;inthigh=0;charFileName[200];charOutFileName[200];

2、intN=0;inti,j,k;memset(FileName,0,sizeof(FileName));memset(OutFileName,0,sizeof(OutFileName));strcpy(FileName,"C:\Users\hanss\Desktop\FY3B_MERSI_GBAL_L1_20170301_0000_1000M_MS.HDF");strcpy(OutFileName,"C:\Users\hanss\Desktop\FY3B.HDF");unsignedint*dse

3、t=newunsignedint[row*col*high];memset(dset,0,sizeof(unsignedint)*row*col*high);一、打开HDF文件并读取相关数据信息1、打开HDF文件file_id=H5Fopen(FileName,H5F_ACC_RDONLY,H5P_DEFAULT);2、打开数据集dset_id=H5Dopen(file_id,"EV_1KM_RefSB",H5P_DEFAULT);3、获取空间地址space_id=H5Dget_space(dset_id);4、

4、获取空间维度信息ndims=H5Sget_simple_extent_dims(space_id,dims,NULL);5、读取数据集status=H5LTread_dataset(file_id,"EV_1KM_RefSB",H5T_NATIVE_UINT,dset);6、读取数据属性floatSlope[30];int_FillValue[1];charband_name[41];H5LTget_attribute_float(file_id,"EV_1KM_RefSB","Slope",Slope);for

5、(inti=0;i<15;i++)printf("Slope:%f",Slope[i]);H5LTget_attribute_int(file_id,"EV_1KM_RefSB","_FillValue",_FillValue);printf("_FillValue:%d",_FillValue[0]);H5LTget_attribute_string(file_id,"EV_1KM_RefSB","band_name",band_name);printf("%s",band_name);或者用H5L

6、Tget_attribute_float(dset_id,"/EV_1KM_RefSB","Slope",Slope);(推荐)H5LTget_attribute_float(file_id,"/EV_1KM_RefSB","Slope",Slope);或者chardset_name[20]="EV_1KM_RefSB";H5LTget_attribute_float(file_id,dset_name,"Intercept",Intercept);【注释】1、如果是file_id的话,不加斜杠也是可以的,但是如

7、果时dse_id则一定要加斜杠2、如果是file_id,加斜杠也可以3、输出数组时遍历每个元素才行,直接输出数组名,其实是输出了数组地址,需要加*,那就是输出数组第一个元素值;也可以定义指针,首先分配空间float*Intercept;Intercept=(float*)malloc(sizeof(float)*15);H5LTget_attribute_float(dset_id,"/EV_1KM_RefSB","Intercept",Intercept);printf("Intercept:");for(

8、inti=0;i<15;i++)printf("%f",*(Intercept+i));4、不要把IDL语法放到C中5、C++中的unsignedchar就是byte型,0-255值unsignedcharDQ[1];H5LTget_attribute_uchar(file_id,"/","DataQuality",DQ);//读取文件属性printf("DataQu

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。