IDL学习——利用IDL和ENVI处理OMI数据,包括臭氧,甲醛和二氧化氮

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

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

一.影像下载

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

1.按照下图步骤,点击搜索按钮进行检索。IDL学习——利用IDL和ENVI处理OMI数据,包括臭氧,甲醛和二氧化氮_第1张图片

2.进行下一步检索

      IDL学习——利用IDL和ENVI处理OMI数据,包括臭氧,甲醛和二氧化氮_第2张图片                                           IDL学习——利用IDL和ENVI处理OMI数据,包括臭氧,甲醛和二氧化氮_第3张图片

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

IDL学习——利用IDL和ENVI处理OMI数据,包括臭氧,甲醛和二氧化氮_第4张图片

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

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

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

IDL学习——利用IDL和ENVI处理OMI数据,包括臭氧,甲醛和二氧化氮_第5张图片

二.数据处理

由于是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  ;进行校正

  结果如下:

IDL学习——利用IDL和ENVI处理OMI数据,包括臭氧,甲醛和二氧化氮_第6张图片

4.成果展示

IDL学习——利用IDL和ENVI处理OMI数据,包括臭氧,甲醛和二氧化氮_第7张图片

 制作成GIF图。

IDL学习——利用IDL和ENVI处理OMI数据,包括臭氧,甲醛和二氧化氮_第8张图片

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

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

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

你可能感兴趣的:(IDL,臭氧,OMI数据处理,数据分析)