2005.7.19
<1>HDF
HDF是分层数据格式,是一种普通的数据格式。HDF文件由一个目录(directory)和一个数据对象集(collection)组成。在许多情况下,directory接口和数据对象集是一一对应的。
每个数据对象有一个目录借口,包含了一个指向对象地址的指针和定义数据类型的信息。
HDF库支持一下数据类型:
1.科学数据组:多维整型或浮点数组;
2.定点数据(Vdata&Vgroups):以表来存储多值数据;
3.一般栅格(Gr):栅格影像;
4.注释--描述文件和部分文件(元数据)的文字;
5.8-bit栅格影像;
6.24-bit栅格影像;
7.调色板:8-bit调色板(伴随影像);
[1]The HDF File Header
文件的第一个组件是文件头,它占用了前四个字节,ASCII的值就是NCSA。
[2]The HDF Directory
HDF Directory(DD list)分为一系列为DD blocks的组件。
每个DD block且包含了三种东西:block中目录入口(Data Descriptors,或DDs)的数目,下一个DD block的字节位置(如果是最后一个,那么就是0),然后是实际的目录入口。
每个DD block的前二个字节包含了“入口的数值”;接下来的四个包含了下一个DD block的字节位置;接下来就是实际的DDs。
每个DD常常是严密的12个字节长。
(the location of the next DD Block entry)常常以文件开头的字节来表示(一共4个字节),这就限定了文件的大小的上限为2G。
[3]HDF Data Descriptors
单个最重要的HDF概念是数据描述(Data Descriptors,DD)。在HDF文件每个单个数据元素(例如image,array,annotation,Vgroup等)都有一个位于DD list中的相应的DD。
每个DD是定长的,有四个部分(four fields):
1.a Tag field:定义了数据元素的类型;
2.a Reference Number field(Ref):对每个有相同Tag的元素都是不同的;
3.An Offset field:给出了数据元素的位置(从文件的开始);
4.a Length field:以字节为单位来给出数据元素的长度;
[3.1] HDF Tags
Tag Field 是16位无符号整型(2字节),意味着有65535个可能的数据元素类型(0是非法tag数),可能的tag值被分为三个范围,如下图:
用户定义和NCSA定义数据元素类型能自由地在相同的文件中混用。MCSA定义了对于一般数据描述的utility tags,对于伪彩色和彩色影像描述的raster image tags,对于多维数组描述的scientific dataset,对于定义值的表的Vdata,对于成组的数据元素的Vgroup tag。
如下图:
[3.2]HDF Reference Numbers
当你存储两个栅格影像数据于一个HDF文件时,你就要产生两个相同tag number(DFTAG_RI)。但是这就产生了问题:如何区别两个DFTAG_RI的问题。
答案就是设置了a Reference number,通常是利用HDF库,对于每个数据对象写入文件。
这样库将保持对reference number的追踪,来保证不会有两个具有相同tag number数据对象具有相同的reference number,或者两个不同tag的对象具有相同的reference number。
虽说许多DD能有一样的reference number,HDF标准要求对一个特有的tag仅有一个特有的reference number。这就意味着每个tag/ref联合在单个文件中是独特的。一个tag/ref对能作为唯一的ID(data identifier)去清楚地分辨特殊的数据元素。
当然也有意外
It is important to note at this point that, with only one exception that we will discuss in a later section, one must take care not to infer meaning on the library’s choice of reference numbers. It will often be the case that some number of data objects in a file will have the same reference number. The only information that can be gleaned from this similarity in reference numbers is that the library is miserly in doling out new reference numbers. It reuses reference numbers in all cases where it can easily ascertain it to be safe to do so. Coincidentally, such cases often occur when writing out groups of data objects such as Raster Image Groups and Scientific Data Sets. However, this behavior is not an official part of the specification of HDF and it should never be relied upon.
[3.4]HDF Groups
HDF库(HDF library)支持利用三种group tag中的一个来组数据元素。
Raster Image Group Tag(DFTAG_RIG)被用来组成所有具有特定raster image的数据对象。
Numeric Data Group Tag(DFTAG_NDG)被用来组成具有特定scientific dataset的数据对象。
Vgroup tag(DFTAG_VG)支持总体的组成所有类型的数据对象,甚至是Vgroups。
这些组(group)里的数据是一个关于此组的Data Identifier的列表。
既然组中不包含数据元素的offset值,DD还是需要在DD list中。所以每个数据元素必须有一个DD存在于DD list中。另外,许多数据元素在相同group中具有Data Identifier列表。
Raster Image Groups(RIGs)和Numeric Data Groups(NDGs)只有Data Identifier的列表,每个四字节长(Vgroup比较复杂点),在RIG和NDG中的Data Identifier数恰好是分为四块的长度(Length field,同上)。
如下表,是一个例子,利用Raster Image Groups(RIGs)定义两个相同大小的影像。是如何利用raster image groups利用相同影像大小数据元素。
具有两个Vgroups的HDF file
那么就有如下的结构:
[3.5] HDF Scientific Datasets
HDF中最重要的数据对象就是Scientific Datasets(SDS)了。一个SDS是一组多维的数组。数组可以多到32767维,包含浮点和整型。它有俩个接口:DFSD(老版),SD(新版)。
[3.6]HDF Vdatas
HDF也支持表格存储,以Vdatas来组织。Vdata的存储需要两个tags:DFAG_VH来定义和命名值的columns,DFAG_VS指向Vdata数据本身。一个例子      
得到的Vdata的上的结构:
 
[3.7]HDF Extended Tags
Extrended Tags提供了许多没有定义与NCSA的tags。它一般是直接指向数据,而是先指向不知格式数据的定义和存储的方式,这样未知的数据在没有更新HDF格式的情况下,也可以存储在HDF中。
<2>HDF-EOS
HDF-EOS数据格式是标准的HDF加上ECS协定,数据类型(3种)和元数据。HDF-EOS增加了3种地理位置数据类型(point,grid,swath),使得能以地球坐标和时间来查询文件内容。
HDF-EOS文件也包含了ECS搜索服务必须的ECS核心元数据。HDF-EOS文件能被任何能处理标准HDF文件读取,但是HDF-EOS地理位置或时间信息利用标准HDF调用是不能得到的。一个文件产品不需要有任何grid,point,swath模型才能成为HDF-EOS。如果ECS元数据包含了,它就是一个合法的HDF-EOS文件。
1.       Point Data Types - Data, such as ship observation reports, that is irregularly spaced in time and/or space.
2.       Swath Data Types - Time-ordered satellite data which represents time sequences of scan lines, profiles, or other array data.
3. Grid Data Types - Data that has been stored or can be represented on a regular grid and
is based on certain set earth/map projection (i.e., Mercator, Lambert Conformal, etc.).
1.“点”数据类型:在时间和/或空间不规则的数据;
仅仅是简单地把数据以空间/时间来组织。
2.“带”数据类型:时间顺序的卫星数据,代表扫描线,图像和另外数组的时间序列;
标准“带”由四个主要部分组成:数据场,地理坐标场,维数与维数地图。
另外还有第五个可选叫做“索引”(index),它用来支持对“带”数据一定类型的接口
3.“网格”数据类型:已有数据或能被描绘在一定地球/地图投影的规则网格的数据;
Grid数据组有三个重要的特征:数据场,维数和投影。
Grid和Swath的主要的不同在于他们地理地址信息的特征。
Swath具有地理位置信息,它是以一系列个体的地理点(带点,地控制点)。Grid具有更加复杂的形式的地理位置,具有相应的参数。
特别的是,HDF-EOS允许point,swath和grid数据集不仅可以以行列(如HDF)来表示,而且可以以时间和地理位置来表示。
另外一个特殊表示HDF-EOS数据特征是ECS核心元数据的托管包含。
The HDF-EOS format shares many of the same important features of HDF
HDF-EOS格式具有与HDF许多相同的,重要特征,
在HDF的基础上,HDF-EOS多提供了:
·         Geolocation information coupled to data
·         Standardized geographical subsetting
·         ECS metadata
1.对照数据的地理坐标信息;
2.标准的地理亚背景;
3.ECS原数据;

HDFHDF-EOS格式说明相关推荐

  1. Eos离线密钥生成的PHP代码

    虽然EOS的密钥算法类似于比特币,但做了一些调整,定义了自己的格式.开发包EosTool包含了EOS离线密钥生成模块,可以不连接任何节点实现离线生成EOS密钥.本文将给出EOS离线密钥生成的PHP代码 ...

  2. EOS区块链PHP开发包

    1. 开发包概述 EosTool的目的是消除使用PHP开发EOS区块链应用的痛苦,例如: 通过Nodeos和Keosd的RPC接口调用其功能 离线生成EOS格式的私钥和公钥 使用本地私钥生成符合EOS ...

  3. eos节点服务器_eos区块链php开发包

    1. 开发包概述EosTool的目的是消除使用PHP开发EOS区块链应用的痛苦,例如:通过Nodeos和Keosd的RPC接口调用其功能 离线生成EOS格式的私钥和公钥 使用本地私钥生成符合EOS要求 ...

  4. php eos,EOS区块链PHP开发包

    1. 开发包概述 EosTool的目的是消除使用PHP开发EOS区块链应用的痛苦,例如: 通过Nodeos和Keosd的RPC接口调用其功能 离线生成EOS格式的私钥和公钥 使用本地私钥生成符合EOS ...

  5. php扩展库EOS,EOS区块链PHP开发包 —— EosTool

    __EosTool__的目的是消除使用PHP开发EOS区块链应用的痛苦,例如: - 通过Nodeos和Keosd的RPC接口调用其功能 - 离线生成EOS格式的私钥和公钥 - 使用本地私钥生成符合EO ...

  6. EOS基础全家桶(十)交易Action操作

    简介 区块链上的所有操作都是通过交易(Transaction)上链的,无论你是转账交易还是发起的智能合约的调用,而EOS和传统区块链不同的是EOS在一个交易里可以发起多个行为(Action),这使得E ...

  7. MeteoInfoLab脚本示例:MODIS Sinusoidal投影HDF数据

    MODIS卫星很多陆面数据都是Sinusoidal投影,数据被分为一个个10*10度(赤道地区)的瓦片(http://modis-land.gsfc.nasa.gov/MODLAND_grid.htm ...

  8. 遥感多光谱数据下载与预处理(一、数据选择 下载)

            首先说明本人并非专业大牛,不是教程贴只是记录一下学习过程和大家交流,过程有不严谨不合规范不对的地方欢迎各位大神指正. 本人目前做过接触过最多的是多光谱遥感数据,也是与无人机.雷达.高光 ...

  9. 区块链 + 大数据:EOS存储

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 谈到区块链的存储,我们很容易联想到它的链式存储结构,然而区块链从比特币发展到今日当红的EOS,技术形态已经演化了10年之 ...

  10. 老黄狂拼CPU!英伟达掏出800亿晶体管显卡,外加世界最快AI超算Eos

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达   视学算法报道   编辑:编辑部 [新智元导读]「拼装」CPU,4 ...

最新文章

  1. Python从入门到精通 - 什么是NumPy (下)
  2. vmware6.5实现基于win2003的群集
  3. default.html
  4. MySQL两种表存储结构MyISAM和InnoDB的性能比较测试
  5. Cannot open D:\Program Files\Anaconda3\Scripts\pip-script.py 错误解决办法
  6. matlab中的图像,MATLAB中图像的基本操作
  7. Sumatra项目用OpenCL提高了Java的性能
  8. 在windows下查看进程
  9. Flask Sessions会话
  10. TokenInsight:BTC新增人气缺乏,多头持仓量持续上升
  11. Hadoop-2.2.0中文文档——MapReduce 下一代 -——集群配置
  12. c语言50个小程序,C语言50小程序.doc
  13. 公司项目NODEJS实践0.1[ ubuntu,nodejs,nginx...]
  14. android swf 文件播放器,swf播放器怎么用?swf播放器安卓版使用教程
  15. 【保姆级教学】Landsat遥感影像下载
  16. 【C#】RestSharp踩坑日记
  17. 100页ppt讲清楚云原生
  18. 在创建生成WIFI二维码手机扫码链接
  19. 区别:符号变量和常变量
  20. 高通FastCV简介

热门文章

  1. z17mini android 8,努比亚Z17mini与荣耀8哪个好?荣耀8与Nubia Z17mini区别对比 (全文)
  2. Protege、D2RQ、JENA与SPARQL
  3. 笔记本计算机待机后显示器,惠普笔记本电脑 - 从休眠/待机模式恢复时笔记本电脑显示器闪烁...
  4. session php
  5. Python机器学习库CatBoost学习使用
  6. jqGrid+FastJson+MybatisPlus快速开发分页排序和增删改查。
  7. speedoffice表格如何去除文本框的边框?
  8. 喜讯!青软集团再次获评「国家中小企业公共服务示范平台」
  9. 前端基础学习:javascript表达式,你知道为什么3+true=4吗?
  10. 倾听客户声音 华为无线亮相美国CTIA展