当前位置:网站首页>成信大ENVI_IDL第三周课堂内容1:读取OMI数据(HDF5文件)以及输出+解析
成信大ENVI_IDL第三周课堂内容1:读取OMI数据(HDF5文件)以及输出+解析
2022-07-17 00:13:00 【炒茄子】
目录
1. 课堂内容
OMI数据的读取与输出,这里实际考察如何取读取HDF5文件以及HDF5文件输出(这里输出是以tiff格式为例)
2. 知识储备
HDF5文件打开的相关函数




3. 编程
; 本函数用于打开HDF5文件并获取数据集
function get_hdf5_ds, file_path, ds_path ; 输入数据集所在文件的路径以及 --数据集的路径(关于这个看主程序的注释)
; 获取文件的id————》通过h5f_open()函数获取
file_id = h5f_open(file_path)
; 传入文件的路径
; 获取数据集的id————》通过h5d_open()函数获取(另外需要说一下, h5d表示hdf(简称h)5(简称5)文件中的data set(简称d)的相关操作)
ds_id = h5d_open(file_id, ds_path)
; 传入数据集所在文件的id,传入数据集的名称
; 获取数据集的数据————》通过h5d_read()函数获取
data = h5d_read(ds_id)
; 传入数据集的id
; 打开的文件以及数据集需要全部关闭当不用的时候,这是习惯和态度问题(其实是为了后续你再使用这些文件避免一些错误和问题)
h5d_close, ds_id ; 这里是h5d, 下面是h5f,两个函数是不一样的,需要注意一下
h5f_close, file_id
; 返回数据集的数据
return, data
; 销毁数据变量(避免空占内存——但是我是存疑的,return之后函数内部的所有变量不都会被销毁吗?还需要自己操作吗)
data = !null
end
pro week_three_study1
; 本程序解决如何读取OMI数据以及它的输出(OMI数据这里是HDF5格式,实际上是学习如何读取和输出HDF5文件)
; 获取文件路径以及数据集的路径(通过hdf explorer软件轻松获取)
file_path = 'D:\IDL_program\experiment_data\chapter_2\NO2\2017\OMI-Aura_L3-OMNO2d_2017m0101_v003-2018m0627t042221.he5'
ds_path = '/HDFEOS/GRIDS/ColumnAmountNO2/Data Fields/ColumnAmountNO2TropCloudScreened'
; 这里说明一下,hdf4不需要数据集在文件里面的目录,但是hdf5需要输入数据集在文件里面的目录(原因不知道,我有猜测但是不确定)
; 获取输出的文件夹路径
out_dir_path = 'D:\IDL_program\experiment_data\chapter_2\output'
; 这里假定你不知道路径中output文件夹是否存在,且你并不愿意亲自查看,可以进行如下操作
if file_test(out_dir_path, /directory) eq 0 then begin
; 这里有一个函数需要认识一下————》file_test()——》检查文件是否存在(默认检查文件,需要检查文件夹需要加上参数/directory)
; 该函数会返回0或者1,0表示不存在,1表示存在
; 创建文件夹
file_mkdir, out_dir_path
endif
; 获取输出的文件的名称
out_name = file_basename(file_path, '.he5') + '.tiff' ; 输出为tiff格式可以进行查看
; 这里file_basename()传入file_path已经可以将文件名称输出,但是我们不需要后缀名.he5
; 所以传入字符串'.he5'函数会将已经获取的文件名称中这个字符串删除并返回
; 输出的路径 = 输出文件夹的路径 + 输出文件的名称
out_path = out_dir_path + '\' + out_name
; 获取数据集的数据
data = get_hdf5_ds(file_path, ds_path)
; 输出
write_tiff, out_path, data, /float
;传入输出的路径、输出的数据、另外这里默认是输出int型,但是我们通过hdf explorer发现该数据集的type是float,所需要指定一下
end编译+运行之后输出的结果:

查看输出的TIFF文件:


4. 题外话(HDF5下的中文路径问题)
这里我遇到一个小小的不兼容,原来我们使用hdf_sd_start()函数打开HDF4文件时
即使传入的路径是中文,那么也是可以打开这个文件的。
但是,在h5f_open()函数中打开HDF5文件传入中文路径就会运行报错,显示无法打开文件,只需要将中文路径修改为英文路径即可(所以,养成写英文路径的习惯吧,也算学了学英语)
报错显示如下:

——————————————————————————————————————————
我是炒茄子,谢谢大家!
边栏推荐
- Opengauss Developer Day 2022 dongfangtong sincerely invites you to visit the "dongfangtong ecological tools sub forum"
- Zeno paradox 2 Achilles and tortoise
- Oozie 集成 Sqoop
- gdb+vscode进行调试0——环境配置
- 随机森林的理解
- 04基于ZigBee的室内无线定位系统设计
- Aurix development studio installation
- JS tree view array batch circular operation
- Hands on deep learning - deep learning computing
- Leveraging Semi-Supervised Learning for Fairness using Neural Networks
猜你喜欢

Neutralizing Self-Selection Bias in Sampling for Sortition

Hands on deep learning -- from full connection layer to convolution layer

Hands on deep learning - deep learning computing

04基于ZigBee的室内无线定位系统设计

Fair Multiple Decision Making Through Soft Interventions
![[translation] transformers in computer vision](/img/94/a6b8fdddca0e3042e1da7f945aeebe.png)
[translation] transformers in computer vision

AURIX Development Studio安装

VS Code 问题:launch:program‘...\.vscode\launch.exe‘ dose not exist

不会的查一查

S32K148EVB 关于ENET Loopback实验
随机推荐
VGG (Visual Geometry Group)
Pointer constant and constant pointer love and hate
指針常量與常量指針愛恨情仇
偏差(bias)和方差(variance)
Handling conditional discrimination
[literature reading] vaqf: full automatic software hardware co design framework for low bit vision transformer
二階邊緣檢測 - Laplacian of Guassian 高斯拉普拉斯算子
安装websocketpp
捉虱子的博弈论
池式组件之内存池篇
搭建map-reduce开发环境
Build Ozzie environment
MATLAB :Warning: the font “Times” is not available
【萌新解题】三数之和
Combined key screenshot analysis
Can protocol communication
C语言程序之编译,链接
YYDS! The latest distributed core technology notes summarized by Alibaba technical officers have been launched, which can be regarded as a blessing
不会的查一查
在Oozie中配置 map-reduce workflow