IDL学习

您所在的位置:网站首页 python处理hdf文件 IDL学习

IDL学习

2023-07-17 03:01| 来源: 网络整理| 查看: 265

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本博客实现对从 https://disc.gsfc.nasa.gov/ 网站上下载的臭氧,甲醛和二氧化氮数据3级数据进行处理。本实例进行对臭氧数据的处理,甲醛和二氧化氮数据跟臭氧数据的处理流程都是一样的。

一.影像下载

PS:下载改数据必须先进行该网站的注册。

1.按照下图步骤,点击搜索按钮进行检索。

2.进行下一步检索

                                                 

3,这里以臭氧数据为例。点击Subset/Get Data后,由于日期和区域已经在第一步选择完毕,直接点击GetData,

4.进行数据下载,关于用户手册感兴趣的可以看一下。

注:因为是日均数据,若想要批量下载可参考以下链接:https://www.cnblogs.com/huapiao-chen/articles/8901602.html

没有亲测,因为我以前在本机上装过别的版本的火狐浏览器,没有使用给的网盘里面的链接。下载时有VPN的话,最好使用VPN进行下载,若没有VPN,臭氧和二氧化氮的数据量较小,下载速度还能看得过去,但甲醛数据量就较大(60多MB),慢慢等吧。。。

二.数据处理

由于是L3级数据,所以对该数据只需使用GLT文件进行校正一下就可以使用了。

使用IDL对该数据进行预处理

1.读取HDF文件

file='E:\Ozone\OMI-Aura_L3-OMTO3e_2019m0706_v003-2020m0117t131443.he5' raster=e.OpenRaster(file,DATASET_NAME='/HDFEOS/GRIDS/OMI Column Amount O3/Data Fields/ColumnAmountO3');读取臭氧数据集

2.对于其经纬度信息,可以从其说明文档中获得其经纬度的存储方式,其经纬度矩阵行列数为720*1440,改数据的初始纬度值为-90°,初始经度值为-180°,间隔为0.25°,这样可以吧经纬度转化为O3浓度一样的矩阵

data=raster.GetData(band=0) dim=size(data,/dimension);获取数据维度信息 rows=dim[1] cols=dim[0] lat=make_array(cols,rows);制作同O3相同矩阵的纬度矩阵 lon=make_array(cols,rows);制作同O3相同矩阵的经度矩阵 for i=0,rows-1 do begin for j=0,cols-1 do begin lat[j,i]=-90+0.25*i lon[j,i]=-180+0.25*j endfor endfor ;相当于对制作的矩阵进行填值 lat_raster=ENVIRASTER(lat,URI='E:\Ozone\lat.dat') lat_raster.save lon_raster=ENVIRASTER(lon,uri='E:\Ozone\lon.dat') lon_raster.save ;将经纬度数据进行输出保存

3.制作GLT文件,并使用GLT文件对原始数据进行校正。也可使用ENVI软件进行GLT文件的制作。可以参考以下链接

http://blog.sina.com.cn/s/blog_764b1e9d0100qzow.html

;先进行GLT文件的制作。 latitude=e.openraster('E:\Ozone\lat.dat') longitude=e.openraster('E:\Ozone\lon.dat');读取刚才制作的经纬度文件 out_name='E:\Ozone\GLT.dat' ;输出路径 lat_id=ENVIRASTERTOFID(latitude) lon_id=ENVIRASTERTOFID(longitude) ;存储为标识 envi_file_query,lat_id,nb=nb_lat y_pos=lindgen(nb_lat) envi_file_query,lon_id,nb=nb_lon ;查询对应的信息 x_pos=lindgen(nb_lon) input_prj=ENVI_PROJ_CREATE(/geographic,datum='WGS-84') output_prj=ENVI_PROJ_CREATE(/geographic,datum='WGS-84');设置投影信息 ENVI_DOIT,'ENVI_GLT_DOIT',dims=dims,I_PROJ=input_prj,O_PROJ=output_prj,$ OUT_NAME=out_name,ROTATION=0,X_FID=lon_id,$ X_POS=x_pos[0], Y_FID=lat_id, Y_POS=y_pos[0] ;进行GLT的制作 ;在进行基于GLT文件的校正 GLT_raster=e.openraster('E:\Ozone\GLT.dat') glt_fid=envirastertofid(GLT_RASTER) raster=e.openraster(file,DATASET_NAME='/HDFEOS/GRIDS/OMI Column Amount O3/Data Fields/ColumnAmountO3') ;打开数据集 out_path='E:\Ozone\20190706.dat' raster_id=envirastertofid(raster) ;存储为标识 envi_file_query,raster_id,ns=ns,nb=nb pos=indgen(nb) ;获取需要信息 envi_doit,'ENVI_GEOREF_FROM_GLT_DOIT',FID=raster_id,GLT_DIMS=dims,GLT_FID=glt_fid,out_name=out_path,pos=pos ;进行校正

  结果如下:

4.成果展示

 制作成GIF图。

如有错误,欢迎指正,万分感谢!

PS:附带有批处理的代码。

https://download.csdn.net/download/weixin_42176976/12504873



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3