modis Level 2 grid 数据是全球格网化数据。一天的数据全在其中。
modis Level 1 和 2 数据是一景一景的影像。
IDL学习笔记(三)OMI数据处理
hdf5文件读取
hdf explor中,看起来像 “ 文件夹 ”一样,通俗可以叫做组。hdf5 与 hdf4不同,hdf5 不能只有数据集的名字,必须也有完整组名,才能被完整找到读出。
读取HDF5数据的一般步骤·
1、打开HDF5文件,获取文件id·
2、获取数据集名
3、将数据集名转换为数据集id
4、从数据集id处读取数据·
5、关闭数据集和文件
hdf5文件读取:
function hdf5_data_get,file_name,dataset_name
file_id = h5f_open(file_name)
dataset_id = h5d_open(file_id,dataset_name) ;直接返回id 而不是index
data = h5d_read(dataset_id)
h5f_close,dataset_id
h5d_close,file_id
return,data
data = !null ;销毁data, 清空内存
end
注意与hdf4文件读取,相区分:
function hdf4_data_get, file_name,sds_name
sd_id = hdf_sd_start(file_name,/read)
sds_index = hdf_sd_nametoindex(sd_id,sds_name)
sds_id = hdf_sd_select(sd_id,sds_index)
hdf_sd_getdata,sds_id,data
hdf_sd_endaccess,sds_id
hdf_sd_end,sd_id
return,data
end
单位转换,输出hdf5数据集的图像,并检查图像经纬度是否正确,若错误,则进行翻转等操作
function hdf4_data_get, file_name,sds_name
sd_id = hdf_sd_start(file_name,/read)
sds_index = hdf_sd_nametoindex(sd_id,sds_name)
sds_id = hdf_sd_select(sd_id,sds_index)
hdf_sd_getdata,sds_id,data
hdf_sd_endaccess,sds_id
hdf_sd_end,sd_id
return,data
end
function hdf5_data_get,file_name,dataset_name
file_id = h5f_open(file_name)
dataset_id = h5d_open(file_id,dataset_name) ;直接返回id 而不是index
data = h5d_read(dataset_id)
h5d_close,dataset_id ; h5d 关闭数据集
h5f_close,file_id ; h5f 关闭文件
return,data
data = !null ;销毁data, 清空内存
end
pro omi_no2_output
file_name = 'E:/Data/IDL/chapter_2/NO2/2017/OMI-Aura_L3-OMNO2d_2017m0101_v003-2018m0627t042221.he5'
dataset_name = '/HDFEOS/GRIDS/ColumnAmountNO2/Data Fields/ColumnAmountNO2TropCloudScreened'
out_directory = 'E:/Data/IDL/chapter_2/result/'
;测试out_directory的目录(/directory)是否存在,若不存在,则创建
dir_test = file_test(out_directory, /directory)
if dir_test eq 0 then begin
file_mkdir,out_directory
endif
out_name = out_directory + file_basename(file_name,'.h5')+'.tiff' ; 舍弃文件路径,只获取基础路径,但同时舍去".he5"
data_temp = hdf5_data_get(file_name,dataset_name)
data_temp = ((data_temp gt 0.0)*data_temp*10.0^10.0)/(!const.NA);(!const.NA)是阿伏伽德罗常数,该句是转换单位 最后单位是mol/km2
;单位换完后,数据会变成“百”“千”量级,方便灰度拉伸
;</