[HDF]hdf-4.2.6类库的使用
HDF文件包括科学数据和VData部分。读取HDF格式的calipso数据,用GDAL可以方便的读取其中的子数据集,但是没有发现GDAL中提供读取Vdata的方法。所以只好考虑借助hdf-4.2.6类库本身。毕竟GDAL也是采用的hdf-4.2.6类库进行了一次封装。
首先从HdfGroup网站下载一个编译好的安装包。解压后目录如下:
新建一个Win32控制台项目。
添加包含和引用的lib,注意安装目录文件夹下的lib文件夹中的.lib文件应该是relese版本的,我这里引用了dll文件夹下的.lib文件。
从Hdf4.2.6源码中找到VD_create_onefield_vdatas.c文件。我这里修改为VD_create_onefield_vdatas.cpp,添加到项目中,把项目中的HdfFirst.cpp直接排除掉,因为里面有个Main函数。
同时在VD_create_onefield_vdatas.cpp添加
#include "stdafx.h"
完整代码:
1 #include "stdafx.h" 2 #include "hdf.h" 3 4 #define FILE_NAME "General_Vdatas.hdf" 5 #define CLASS1_NAME "5x1 Array" 6 #define CLASS2_NAME "6x4 Array" 7 #define VDATA1_NAME "First Vdata" 8 #define VDATA2_NAME "Second Vdata" 9 #define FIELD1_NAME "Single-component Field" 10 #define FIELD2_NAME "Multi-component Field" 11 #define N_RECORDS_1 5 /* number of records the first vdata contains */ 12 #define N_RECORDS_2 6 /* number of records the second vdata contains */ 13 #define ORDER_2 4 /* order of the field in the second vdata */ 14 /* Note that the order of the field in the first vdata is 1 */ 15 16 int main( ) 17 { 18 /************************* Variable declaration **************************/ 19 20 intn status_n; /* returned status for functions returning an intn */ 21 int32 status_32; /* returned status for functions returning an int32 */ 22 int32 file_id, vdata1_ref, vdata2_ref; 23 24 /* 25 * Define an array to buffer the data of the first vdata. 26 */ 27 char8 vdata1_buf [N_RECORDS_1] = {'V', 'D', 'A', 'T', 'A'}; 28 29 /* 30 * Define an array to buffer the data of the second vdata. 31 */ 32 int32 vdata2_buf [N_RECORDS_2][ORDER_2] = {{1, 2, 3, 4}, {2, 4, 6, 8}, 33 {3, 6, 9, 12}, {4, 8, 12, 16}, 34 {5, 10, 15, 20}, {6, 12, 18, 24}}; 35 36 /********************** End of variable declaration **********************/ 37 38 /* 39 * Open the HDF file for writing. 40 */ 41 file_id = Hopen (FILE_NAME, DFACC_WRITE, 0); 42 43 /* 44 * Initialize the VS interface. 45 */ 46 status_n = Vstart (file_id); 47 48 /* 49 * Create the first vdata and populate it with data from the vdata1_buf 50 * array. Note that the buffer vdata1_buf is cast to (uint8 *) for the 51 * benefit of generic data type. 52 */ 53 vdata1_ref = VHstoredata (file_id, FIELD1_NAME, (uint8 *)vdata1_buf, 54 N_RECORDS_1, DFNT_CHAR8, VDATA1_NAME, CLASS1_NAME); 55 56 /* 57 * Create the second vdata and populate it with data from the vdata2_buf 58 * array. 59 */ 60 vdata2_ref = VHstoredatam (file_id, FIELD2_NAME, (uint8 *)vdata2_buf, 61 N_RECORDS_2, DFNT_INT32, VDATA2_NAME, CLASS2_NAME, ORDER_2); 62 63 /* 64 * Terminate access to the VS interface and close the HDF file. 65 */ 66 status_n = Vend (file_id); 67 status_32 = Hclose (file_id); 68 return 0; 69 }
View Code
将Dll文件拷贝到Debug目录下,运行,发现目录下生成了General_Vdatas.hdf文件。在Matlab中查看:
转载于:https://www.cnblogs.com/yhlx125/p/4447229.html
[HDF]hdf-4.2.6类库的使用相关推荐
- python把hdf转为tif_命令行记录-python读取hdf图层,转成tif文件
主体内容来自 https://www.cnblogs.com/ninicwang/p/11535170.html 1.安装pyhdf包 2.读hdf4文件 #导入包 from pyhdf.SD imp ...
- matlab怎么输入输出文件,[转载]底层文件输入输出函数
[转载]底层文件输入输出函数 http://sincerewfeng.spaces.live.com/ fclose :关闭文件 fopen :打开文件 fread :从文件中读入二进制数据 fwri ...
- 导出matlab程序,Matlab数据导入导出
Matlab提供了从磁盘文件或剪贴簿转载数据至工作区(数据导入)和将工作区变量存入磁盘文件(数据导出)的多种途径. 最简单的办法是使用界面导入向导,打开文件菜单中的导入数据而后按提示操作. 一.导入文 ...
- 【竞赛相关】特征/模型存储的5种方法
Hello大家好,我是Coggle菌.今天我将继续和大家一起学习竞赛中的各种基础知识点,从基础库使用到具体的比赛案例. 今天将介绍的比赛中存储特征的几种方法,供大家学习和选择. 方法1:csv/txt ...
- GDAL\OGR读取数据示例 C#版本
首先创建一个Windows窗体应用程序,然后拖几个按钮和文本框,如下图所示.第一行用来显示栅格数据的路径,点击浏览找到一个栅格文件,将路径显示在文本框中,然后点击读取,将图像的基本信息显示在最下方的富 ...
- matlab处理各种数据、文件
MATLAB提供了多种方式从磁盘读入文件或将数据输入到工作空间,即读取数据,又叫导入数据:将工作空间的变量存储到磁盘文件中称为存写数据,又叫导出数据.至于选择哪种机制,则根据下面两个因素决定:● 用户 ...
- 空间数据计算引擎GeoSpark调研
什么是空间数据 空间数据(Spatial Data) 空间数据又称几何数据,它用来表示物体的位置.形态.大小分布等各方面的信息,是对 现实世界中存在的具有定位意义的事物和现象的定量描述.根据在计算机系 ...
- 腾讯云服务器挂载云硬盘
腾讯云服务器挂载云硬盘 1.到腾讯云服务器购买一块云硬盘,然后直接挂载到你的服务器下就可以了,如果服务器不能识别,请看部分存量云服务器无法识别弹性云盘的解决方法 2.挂载完云硬盘之后,云硬盘默认处于未 ...
- 数据分析中常见的存储方式
点击上方"大话coding",选择"星标"公众号 重磅干货,第一时间送达 大家好,我是小轩 这两天整理了在数据分析中常见的5种存储格式 内容比较多,只是简要整理 ...
最新文章
- 只因写了一段爬虫,公司200多人被抓 ?
- addroid 自定义布局
- 使用Spring Session和JDBC DataStore进行会话管理
- Oracle数据库(三)
- mysql 命令desc tables_oracle中与mysql中的命令 show databases, show tables, desc table类似的命令集...
- 正常血压(信息学奥赛一本通-T1076)
- 停机断网也能充话费了!微信和三大运营商打造绿色通道:太方便了!
- jsf ajax循环调用,每次JSF ajax回发后执行JavaScript
- Powershell进阶学习(6) 部署 Windows PowerShell Web 访问
- intellij中使用git插件将项目上传到码云
- python新手入门.pdf_所有Python入门书籍的整理,初学者必看,附赠所有电子版(一)...
- 今日分享idea精彩好看的主题+网站地址
- R pdf大小_PDF如何压缩?这两招教您快速压缩PDF!
- GooglePlay内购服务器验单配置
- RT-thread Nano移植并实现多线程任务
- 修改 Mixamo 导出的动画名字
- 精准填报志愿、一分不浪费……靠谱吗?
- 晶联讯JLX12864G-290液晶,STM32+HAL库 SPI显示成功。
- win11右击文件夹假死
- 6 个超酷的学习算法网站,Leetcode 不是第一 ?
热门文章
- vue 定义全局函数
- linux 自动备份脚本
- 安装apache+gd2(jpeg,png等)+mysql-client+php脚本
- C++下简单的socket编程
- ChannelFactory创建和销毁昂贵
- Python之面向对象进阶系列
- 测试多个线程调用同一静态方法(无静态变量)时是否有线程安全问题
- uva11584 Partitioning by Palindromes
- [Zabbix] 怎样实现邮件报警通知以及免费短信报警通知
- postgresql查询栅格数据范围(extent)