以三维数据读写为例_第1页
以三维数据读写为例_第2页
以三维数据读写为例_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、以三维数据读写为例打开,读取空间属性、维度,数据集属性,文件属性,数据集的数据;/写入txt文件(动态定义数组一一用指针),写入DAT文件(可以用ENVI打开查看图像), 写入HDF文件写入HDF文件属性、数据属性、空间属性,数据压缩。hid_t , space_id,dset_id;hsize_t dims3=0,0,0;int n dims=0;int status;int col = 0;int row =0;int high=0;char 200;char 0ut200;int N=0;int i,j,k;memset(, sizeof ();memset(Out, sizeof (O

2、ut);strcpy(, "C:UsershanssDesktopFY3B_MERSI_GBAL_L1_20170301_0000_1000M_MS.HDF")Jstrcpy(Out, "C:Usersha nssDesktopFY3B.HDF" );unsigned int * dset= new unsigned int row * col*high;memset(dset,0, sizeof (unsigned int )* row * col*high);一、打开HDF文件并读取相关数据信息1、打开HDF文件=H5Fope n(, H5F_ACC

3、_RDONLY, H5P_DEFAULT);2、打开数据集dset_id = H5Dope n(, "EV_1KM_RefSB;H5P_DEFAULT);3、获取空间地址space_id = H5Dget_space(dset_id);4、获取空间维度信息n dims=H5Sget_simple_exte nt_dims(space_id,dims,NULL);5、读取数据集status=H5LTread_dataset(, "EV_1KM_RefSB"H5T_NATIVE_UINT,dset);6、读取数据属性float Slope30;int _FillVal

4、ue1;char band_n ame41;H5LTget_attribute_float(, "EV_1KM_RefSB""Slope" ,Slope);for (int i=0;i<15;i+)printf( "Slope:%fn" ,Slopei);H5LTget_attribute_i nt(, "EV_1KM_RefSB""_FillValue" ,_FillValue);printf( "_FillValue:%dn",FillValueO);H5LTget

5、_attribute_stri ng(,”EV_1KM_RefSB","ba nd_n ame",ba nd_n ame);pri ntf("%sn",ba nd_n ame);或者用H5LTget_attribute_float(dset_id, "/EV_1KM_RefSB" "Slope" ,Slope);(推荐) H5LTget_attribute_float(, "/EV_1KM_RefSB" "Slope" ,Slope);或者char dset_ na

6、me20= "EV_1KM_RefSB"H5LTget_attribute_float(, "In tercept" ,In tercept);【注释】1、如果是的话,不加斜杠也是可以的,但是如果时dse_id则一疋要加斜杠2、如果是,加斜杠也可以3、输出数组时遍历每个元素才行,直接输出数组名,其实是输岀了数组地址,需要加*,那就是输出数组第一个兀素值;也可以定义指针,首先分配空间float *ln tercept;In tercept=(float*)malloc(sizeof(float)*15);H5LTget_attribute_float(ds

7、et_id,"/EV_1KM_RefSB","I ntercept",l ntercept);pri ntf("l ntercept:n");for(int i=0;i<15;i+)prin tf("%fn",*(I ntercept+i);4、不要把IDL语法放到C中5、C+中的 unsigned char 就是 byte 型,0-255 值unsigned char DQ1;H5LTget_attribute_uchar(,"/","Data Quality",DQ

8、); /读取文件属性prin tf("Data Quality:%dn",*DQ);H5LTset_attribute_uchar(o,"/","Data Quality",DQ,1); /写入文件属性最后显示的数据类型是8-bit un sig ned in teger 7、读取文件属性float BB200;H5LTget_attribute_float(, "/" , "BB start time" ,BB); for (int i=0;i<200;i+)printf( "

9、BB:%fn" ,BBi);二、将数据和信息写入HDF文件hid_t ;hid_t dataset_id;hid_t ;1、创建HDF文件=H5Fcreate(Out, H5P_DEFAULT,H5P_DEFAULT);2、设置空间维度属性=H5Screate_simple(3,hdims,NULL);3、创建数据集(或组)dataset_id = H5Dcreate();4、写入数据H5Dwrite(dataset_id,H5T_NATIVE_UINT,H5S_ALL,H5S_ALL,H5P_DEFAULT,pData);5、写文件属性"/" , "A

10、dditionalAnotation",AA);"/" ,"BB start time" ,BB,200);H5LTset_attribute_stri ng(o,H5LTset_attribute_double(o,6、写数据集属性H5LTset_attribute_float(o,"EV_1KM_RefSB,""l ntercept",In tercept,15);H5LTset_attribute_string(odset_id,"/EV_1KM_RefSB", "band_name",band_name);7、数据压缩hid_t plist_id;/创建数据集生成的性质列表 plist_id = H5Pcreate(H5P_DATASET_CREATE);hsize_t cdims3;cdims0 = 1;cdims1 = 256;cdims2 = 2048;/ /创建分块的性质status = H5Pset_chu nk(plist_id,3,cdims);/设置压缩方法,zlib 同gzipstatus = H5Pset_deflate(plist_id,5);压缩后,创建数据集时要用odset_i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论