科学网

 找回密码
  注册
科学网 标签 HDF

tag 标签: HDF

相关帖子

版块 作者 回复/查看 最后发表

没有相关内容

相关日志

我的GridViewer软件可为地学数据处理工作提供帮助
sucksis 2020-9-12 11:19
作为一名气象水文领域做大数据研究的科研人员和教学人员。深感各种地学资料的处理费时费力,在数据处理过程中积累了大量代码,集成为一个含交互界面的软件 GridViewer 。本人是科研人员,而非商业机构,望小编能给审核通过。发布此软件是为了科研性质的交流,并非打广告。 现开始 支持hdf5资料 。 该软件为本人自己开发的(主要开发于2016年年底),免费发布,无任何商业支持或机构支持。 以往的功能包括: 1.查看netCDF,hdf, GeoTiff,ArcGIS ASCII,Grib1/Grib2及各种GDAL兼容格式的数据资料,比ArcGIS等软件方 得多。 2.实现了另存为netCDF、ASCII码、GeoTiff格式的功能,即格式转换功能。 3.方便的地图浏览功能,可显示世界地图及中国地图轮廓(为正确的中国地图轮廓,包含了边界争议区域)。 4.其它功能,大家可慢慢体验。 运行环境为Windows 7以上的dotnet环境。 感兴趣的可下载。 可在码云网站下载: https://gitee.com/sucksis/grid-viewer 解压后可直接运行其中的exe。
2181 次阅读|0 个评论
[转载]Python+GDAL: HDF-EOS Translation
lixujeremy 2015-8-1 11:13
(1) HDF-EOS Introduction HDF is the prescribed format for standard data products that are derived from EOS missions. HDF-EOS (Hierarchical Data Format - Earth Observing System) is a self-describing file format for transfer of various types of data between different machines based upon HDF. HDF-EOS is a standard format to store data collected from EOS satellites: Terra, Aqua and Aura . Two versions of HDF-EOS libraries: HDF-EOS2 based on HDF4 and HDF-EOS5 based on HDF5 are developed. (2) GeoTIFF Introduction GeoTIFF is a public domain metadata standard which allows georeferencing information to be embedded within a TIFF file. The potential additional information includes map projection, coordinate systems, ellipsoid s, datums, and everything else necessary to establish the exact spatial reference for the file. The GeoTIFF format is fully compliant with TIFF 6.0, so software incapable of reading and interpreting the specialized metadata will still be able to open a GeoTIFF format file. Convert a raster to geotiff from hdf-eos (H4) 操作 HDF-EOS ( H4 )数据转换为 GeoTiff 格式文件,目前 Python+GDAL (我的认识)只能以单波段的方式实现。转换前,文件的 Grid Name (应该只有一个)以及 Filed Name (可以多个)必须被指名,分别记录在 GridName.txt 和 keyword.txt 文件之中。若 Grid Name 和 Filed Name 还不明确, IDL 程序 hdfinfo.pro ( invoking hdf_sd_getnameandindex.pro )能够输出 HDF-EOS 文件的相关属性,再分别填好 GridName.txt 和 keyword.txt 。 随后, Python+GDAL 程序实现 HDF-EOS ( H4 )文件输出 GeoTiff 文件操作。 Materials for Practice ( HDF2GTiff.rar ). Convert a raster to geotiff from hdf-eos (H5) 参考 Some tips on HDF5 files Materials for Practice H5 ( He5toGTiff.rar ). HDF-EOS Translation Outputs Comparision H4 : ArcGIS 、 ENVI 、 HDFView 和 GDAL 分别将 H4 文件其中之一波段转换为 GeoTIFF 文件,转换结果如图 1 所示, HDFView 与其他三种工具的转换结果在 Upper Left 坐标上有非常明显的差异,前者是 12 ° 27 ′ 12.97 ″ E,49 ° 59 ′ 45.00 ″ N ,后者是 12 ° 2 7 ′ 28.46 ″ E,49 ° 59 ′ 60.00 ″ N 。从图 2 知道,这两者坐标相差约 559 米 。 H4TIFFS.rar 图 1 图 2 H5 : HDFView 虽然可以将 H5 文件转换为 GeoTIFF ,但该数据没有成功。 ENVI 没有发现它的转换方法。那么,只有 ArcGIS 和 GDAL 的转换结果见图 3 ,两者差别很大,第一是图像的列( Column )行( Row )分别是 3931×1644 与 60×1644 ,第二是 Upper Left 坐标 28 ° 10 ′ 3.18 ″ W, 77 ° 24 ′ 51.08 ″ N 与 69 ° 9 ′ 22.10 ″ W, 68 ° 25 ′ 52.70 ″ S 。查询元数据( Metadata )可知。 H5TIFFS.rar 图 3 Discussion 针对这一不同坐标的问题,我去信咨询 NASA 专家 Wenli Yang ,他在回复中指出 H4 文件转换结果 GDAL 是正确的(基于 GDAL 的 ENVI 及 ArcGIS 同样是正确的), HDFView 转换结果错移半个像元,大约就是 559 m 。 H5 文件回复中指出该数据是推扫格式,即这类数据的经度和纬度本不是固定间隔,不符合 Geotiff 格式文件固定间隔的要求,也就不能转换为 Geotiff 文件( The data in the HDF file in Swath format, meaning the latitude and longitude values are not in a regular grid. Distances between pixels vary from place to place. ) 注意 :本例的 H5 数据不能转换为 Geotiff 文件,不代表其他 H5 数据就一定不能成功转换,依数据情况而定,但本例所应用的 H5 处理代码应该还是准确的。 Supplement Proba-V ( VITO ) 数据同时提供两种数据格式进行分发,分别是 GeoTIFF 和 HDF5 文件,在此 H5 文件逐像元对应坐标是等间隔分布,因此它可以被转换为 GeoTIFF 格式文件。 PROBAV.rar References HDF-EOS Tools and Information Center . This site is dedicated to information about HDF-EOS and about tools available to view or work with HDF-EOS and other NASA HDF files. Programming (C, Fortran, IDL® and MATLAB®) and tool examples to access HDF- EOS and other NASA HDF files are also available. It also hosts an archive of presentations made at an annual HDF/HDF-EOS workshop. GeoTIFF, from Wikipedia, the free encyclopedia . HDF Group . convert from HDF to GeoTiff . COMPREHENSIVE EXAMPLES . Display HDF-EOS5 in ENVI . ArcGIS Open HDF-EOS5 . How to convert (SWI) HDF5 data to GeoTIFF ? H5 Source: Aura OMI Cloud Data Product-OMCLDO2 (Version 003) .
个人分类: Python|4443 次阅读|0 个评论
[转载]RS: HDF-EOS Viewer
lixujeremy 2015-7-30 17:23
HDF-EOS plug-in for HDFView2.10.1 (with heconvert 4.0) is officially released on June 5, 2014. The release contains tar files for the supported platforms SUN (32-bit), LINUX (32, and 64-bit), MAC INTEL (64-bit) and WINDOWS (32, and 64-bit). See README_Install_Plug-in_2.10 for installation. The following files have been placed on the EDHS ftp site (ftp to edhs1.gsfc.nasa.gov then change directory to edhs) in: /HDFView/latest_release: HDFView2.10.1_HDF-EOS_Plugin_LNX32.tar.gz HDFView2.10.1_HDF-EOS_Plugin_LNX64.tar.gz HDFView2.10.1_HDF-EOS_Plugin_SUN32.tar.gz HDFView2.10.1_HDF-EOS_Plugin_MAC64.tar.gz HDFView2.10.1_HDF-EOS_Plugin_WIN32.zip HDFView2.10.1_HDF-EOS_Plugin_WIN64.zip These files are accessible from our anonymous ftp site edhs1.gsfc.nasa.gov ( use ftp://edhs1.gsfc.nasa.gov/edhs/HDFView/ ) or from HDFView Plug-in website links in http://newsroom.gsfc.nasa.gov/sdptoolkit/HDFView/HDFViewDownload.html For HDFView Plug-in please follow the README_Install_Plug-in_v2.10 file for installation. For Toolkit, HDF-EOS and related software please visit our web site http://newsroom.gsfc.nasa.gov/sdptoolkit/toolkit.html Here are summary of some new features in this new release: HDFView Plug-in: - Support ofWindows 64-bit Platform. - Support forsaving HDF-EOS2 grid images in geoTIFF format. - Support forsaving multi-band HDF-EOS2 grid images in multi-band geoTIFF format. - Time Conversion tools for spreadsheet elements from TAI93 to UTC and UTC to TAI93 - A few bugfixes for reading attributes. - improved heconvert usage with the following features: - Write vanilla HDF objects (objects created using vanilla HDF4 calls) in addition to the HDF-EOS objects (objects created using HDF-EOS2 calls) to the output. - Convert Dimension Scales when present. - Copy ECS's Inventory (core) and Archive metadata into the output - Write HDF written field and group attributes to the output fields and groups. Please report any problems or suggestions to mailto:PGSTLKIT@raytheon.com Warning: You have to modify some characters if the hdfviewer could not open successfully , following the steps—Open the file ‘hdfview.bat’, located in ~\2.11.0\bin, line 27 ‘set INSTALLDIR=D:/Tools/HDFVIEWER/2.11.0’, that is the directory you installed. Then, the program would be execute well. All configuration had been done, it would be open as figure 1 if HDF-EOS. 图 1 Materials for practice ( HDFEOSViewer.rar ).
个人分类: RS|2191 次阅读|0 个评论
认识HDF
bluewind23 2010-12-27 09:58
HDF是用于存储和分发科学数据的一种自我描述、多对象文件格式。HDF是由美国国家超级计算应用中心(NCSA)创建的,以满足不同群体的科学家在不同工程项目领域之需要。HDF可以表示出科学数据存储和分布的许多必要条件。HDF被设计为: 自述性:对于一个HDF文件里的每一个数据对象,有关于该数据的综合信息(元数据)。在没有任何外部信息的情况下,HDF允许应用程序解释HDF文件的结构和内容。 通用性:许多数据类型都可以被嵌入在一个HDF文件里。例如,通过使用合适的HDF数据结构,符号、数字和图形数据可以同时存储在一个HDF文件里。 灵活性:HDF允许用户把相关的数据对象组合在一起,放到一个分层结构中,向数据对象添加描述和标签。它还允许用户把科学数据放到多个HDF文件里。 扩展性:HDF极易容纳将来新增加的数据模式,容易与其他标准格式兼容。 跨平台性:HDF是一个与平台无关的文件格式。HDF文件无需任何转换就可以在不同平台上使用。 HDF提供6种基本数据类型:光栅图像(RasterImage),调色板(Palette),科学数据集(ScientificDataSet),注解(Annotation),虚拟数据(Vdata)和虚拟组(Vgroup)。 RasterImage数据模型被设计成能为光栅图像数据的存储和描述提供一个灵活的方法,包括8比特和24比特光栅图像。 Palette作为颜色查找表提供图像的色谱。它是一个表格,其表中每列的数字表示特定颜色的数字。 ScientificDataSet模型是用来存储和描述科学数据的多维数组。 Vdata模式是用来存储和描述数据表格的结构。 HDF的Annotations是文本字符串,用来描述HDF文件,或HDF文件包含的HDF数据对象。 Vgroup结构模型被设计为与相关数据对象有关。一个Vgroup可以包含另一个Vgroup以及数据对象。任何HDF对象都可以包含在一个Vgroup中。 HDF库为每一个数据模型提供一个应用编程接口。 最好的办法是把HDF文件看成为一本有表格内容的多章节书。HDF文件是“数据书”,其中每章都包含一个不同类型的数据内容。正如书籍用一个目录表列出它的章节一样,HDF文件用“dataindex”(数据索引)列出其数据内容。 HDF文件结构包括一个fileid(文件号)、至少一个datadescriptor(数据描述符)、没有或多个dataelement(数据内容)数据内容。 fileid(文件号)是一个32比特的值,最多占用HDF文件的头4个字节。通过读取这个值,应用程序就知道此文件是否是一个HDF文件。 Datadescriptorblock(数据描述符块)包含一个数据描述符数值。所有的数据描述符都是12字节长,包含4个域,即一个16比特长的标签,一个16比特的引用字,一个32比特的数据偏移量和一个32比特的数据长度。 tag(标记)是数据描述符域,表示存于相应数据内容的数据类型。例如306是光栅图像对象的识别符。 Referencenumber(引用号)是一个16比特无符号整型数。HDF文件中的每一个对象,由HDF库和数据描述符中的标签确定一个唯一的引用字。在引用字确定的数据对象期间,标签和引用字不能改变。标签和引用字的结合可以唯一确定文件中对应的数据对象。 引用字没有必要连续指定,因此,在一个具有相同标签区分对象的方法后,不能假设引用字的值有任何意义。有时应用程序员也会发现在他们的程序中把一些另外的信息加到引用字中是很方便的,但必须强调的是,HDF库本身并不识别这些含义。 Dataoffsetfield(数据偏移量)是一个32比特无符号整型字。通过存储文件开始时的字节数和数据内容开始时的字节数,指明文件中数据内容的位置。 Lengthfield(长度域)是一个32比特无符号整型字。它表示整个数据内容的字节大小。数据内容增加,其长度也要增加。 Dataelement(数据成分)是数据对象的原始数据部分,包含每个象素的值。 HDF5被设计为改善HDF4的一些局限性。HDF4的某些局限性有:单个文件不能存放多于20000个对象,单个文件大小也不能大于2G字节。数据模式的兼容性不够好,有过多的对象类型,数据类型太严格。库函数过时和过于复杂,不能有效地支持并行口的I/O,很难用于线程应用中。 HDF5包含如下的改进: 被设计为一种新的格式用来改进HDF4.x,特别是每个文件可以存储更大的文件和更多的对象。 数据模式更简洁、更全面,它包含两个基本结构:多维数组记录结构,和分组结构。 更简洁、更利于工程库和应用编程接口,支持并行I/O,线程和其他一些现代系统和应用要求。 HDF文件的3层交互 HDF文件可以在几个交互层次中可视。在最底层,HDF是一个存储科学数据的物理文件格式。在它的最高层,HDF是集工具和应用于一体的数据文件,可以对HDF文件中的数据进行修改、显示和分析。在这两个层次之间,HDF是一个能提供高层和底层编程接口的软件库。 基本接口层,或称为底层的应用编程接口(API),是为软件开发者保留的。它是为数据流的直接文件I/O、错误处理、内存管理和物理存储而设计的。它是一个为有经验的HDF程序员提供的软件工具。比较目前从高层接口得到的功能,通过使用这些基本接口层,HDF程序员创建HDF文件时能够做更多的事。底层接口例程只提供C语言。 HDFAPIs(HDF应用编程接口)分为两类:多文档接口(用于新版本)和单文档接口(用于旧版本)。多文档接口是提供从一个应用中同时连接几个HDF文件的接口,这点很重要,但单文档接口并不支持这点。用户在开发新的接口和界面时,必须提醒他们是在一个改进了的新接口版本下开发的。为了向上兼容,旧版本仍然保留。 HDFAPIs包含几个独立的例程集,每个例程集是专门为简化一种数据类型的存储处理而设计的。这些接口作为单文件和多文件层。尽管每个接口都要求程序调用,但所有底层细节都可以忽略。大多数情况下,只须在正确的时间调用正确的函数,剩下的事就由接口程序处理。多数HDF接口例程都有FORTRAN-77和C语言。也有用于Java程序员访问HDF文件的JavaHDF接口程序。
个人分类: 高性能服务|6773 次阅读|0 个评论
用IDL和MATLAB实现好玩的HDF批处理
热度 1 liqin860408 2010-10-5 01:41
针对主被动微波数据:Quikscat/seawinds和AMSR-E 数据来自NSIDC和NASA 程序记得备份整理
个人分类: 未分类|5204 次阅读|2 个评论
基于MATLAB创建HDF之Vgroup及向存在Vgroup中追加数据
zjwang 2010-9-20 14:53
下面的两个例子, 1,展示了如何往HDF文件中新建一个Vgroup并加入数据, 2,展示了如何往Vgroup中追加数据 process 1 %% insert a Vgroup to a exist HDF file % open a hdf file % written by WANG Zijun, 2010.09.20 % Jilin University, Email: wzj08@mails.jlu.edu.cn fId = hdfh('open', 'LimbRad.hdf','rdwr', 0); % init Vgroup and SD Interfaces stat = hdfv('start', fId); sdId = hdfsd('start', 'LimbRad.hdf', 'write'); %create a Vgroup and SDS sdsId = hdfsd('create', sdId, 'lat_sat', 'double', 2, ); stat = hdfsd('writedata', sdsId, , , lat_sat); vgId = hdfv('attach', fId, -1, 'w'); stat = hdfv('setname', vgId, 'SatGeom'); stat = hdfv('setclass', vgId, 'class1'); % insert SDS in Vgroup sRef = hdfsd('idtoref', sdsId); stat = hdfv('addtagref', vgId, 720 , sRef); stat = hdfsd('endaccess', sdsId); stat = hdfsd('end', sdId); % detach Vgroup, close Vgroup interface and file stat = hdfv('detach', vgId); stat = hdfv('end', fId); stat = hdfh('close', fId); hdfml('closeall'); process 2 %% reopen a hdf and insert SDS to a Vgroup % open a hdf file fId = hdfh('open', 'LimbRad.hdf','rdwr', 0); % init Vgroup and SD Interfaces stat = hdfv('start', fId); sdId = hdfsd('start', 'LimbRad.hdf', 'write'); %create a SDS sdsId = hdfsd('create', sdId, 'lon_sat', 'double', 2, ); stat = hdfsd('writedata', sdsId, , , lon_sat); %get the reference number of the target Vgroup vgRef = hdfv('find', fId, 'SatGeom'); % Attach to the target vGroup vgId = hdfv('attach', fId, vgRef, 'w'); % insert SDS to Vgroup sRef = hdfsd('idtoref', sdsId); stat = hdfv('addtagref', vgId, 720 , sRef); stat = hdfsd('endaccess', sdsId); stat = hdfsd('end', sdId); % detach Vgroup, close Vgroup interface and file stat = hdfv('detach', vgId); stat = hdfv('end', fId); stat = hdfh('close', fId); hdfml('closeall');
个人分类: 计算程序|6644 次阅读|0 个评论

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-24 20:56

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部