当前位置:网站首页>成信大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文件传入中文路径就会运行报错,显示无法打开文件,只需要将中文路径修改为英文路径即可(所以,养成写英文路径的习惯吧,也算学了学英语)
报错显示如下:

——————————————————————————————————————————
我是炒茄子,谢谢大家!
边栏推荐
- 搭建Ozzie环境
- 散列表、布隆过滤器、分布式一致性hash
- Analysis of IGBT direct short circuit process
- 边缘检测方法 -- 一阶边缘检测
- Hue oozie editor scheduling shell
- 静态库与动态库
- Differences between saber PSPICE Simulink power supply simulation software
- A causal linear model to quantify edge unfairness for unfair edge prioritization
- [cute new problem solving] sum of three numbers
- MATLAB :Warning: the font “Times” is not available
猜你喜欢

Static library and dynamic library

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

边缘检测方法 -- 一阶边缘检测

霍夫变换讲解

Powerful chart component library scottplot

vscode+ros2环境配置

gdb+vscode进行调试0——环境配置

递推与递归学习笔记
![[literature reading] vaqf: full automatic software hardware co design framework for low bit vision transformer](/img/41/aca6596b1fa50a1940791e6e00a17a.png)
[literature reading] vaqf: full automatic software hardware co design framework for low bit vision transformer

YYDS! The latest distributed core technology notes summarized by Alibaba technical officers have been launched, which can be regarded as a blessing
随机推荐
Recursive and recursive learning notes
Static library and dynamic library
YYDS! The latest distributed core technology notes summarized by Alibaba technical officers have been launched, which can be regarded as a blessing
Analysis of IGBT direct short circuit process
06基于STM32的智能电子药盒设计
Saber Pspice simulink电源仿真软件的区别
捉虱子的博弈论
笔记:光源选型与应用
安装websocketpp
原码,反码,补码
05基于ZigBee的路灯灯控故障检测系统设计
Build map reduce development environment
switch详解
GoogLeNet
Oozie 集成 Shell
VIM 配置文件
Fairness in Semi-supervised Learning: Unlabeled Data Help to Reduce Discrimination
搭建Spark on yarn环境
Détection de bord de deuxième ordre laplacien de guassian Gaussian laplacien Operator
HRNet