如何使用Python读取IMERG数据
概述:
此配方显示了如何使用Python从全球降水测量(GPM)任务的IMERG数据集中读取数据。
例:
**示例数据: GPM Level 3 IMERG每月0.1 x 0.1度降水(GPM_3IMERGM)于2015年7月。
预计完成以下程序的时间:20分钟
先决条件:
任务:查看数据
最佳时间:用户想要使用Python读取GPM IMERG数据
要求: Python和免费软件包:numpy,matplotlib,basemap和h5py。Matplotlib和底图仅用于绘图。
程序:
1.下载数据
在GES DISC访问数据之前,用户必须首先注册Earthdata登录,然后通过以下步骤授权访问GES DISC中的数据: data-access。
- 在Web浏览器中,请访问:https://disc.gsfc.nasa.gov
- 在“ 搜索”字段中,输入GPM_3IMERGM并按Enter键。
- 单击最新版本的GPM_3IMERGM数据,当前版本为5。
- 单击右侧的“在线存档”按钮。
- 单击“2014 /”文件夹
- 点击“ 3B-MO.MS.MRG.3IMERG.20140312-S000000-E235959.03.V05B.HDF5”文件下载。
- 注意:此配方适用于任何IMERG数据,而不仅仅是月度估算。
2.运行以下Python脚本
# This is a sample script that reads and plots the IMERG data.
from mpl_toolkits.basemap import Basemap, cm
import matplotlib.pyplot as plt
import numpy as np
import h5py as h5py
dataset = h5py.File('/path/to/data/3B-MO.MS.MRG.3IMERG.20150801-S000000-E235959.08.V03D.HDF5', 'r') # Change this to the proper path
precip = dataset['Grid/precipitation'][:]
precip = np.transpose(precip)
theLats= dataset['Grid/lat'][:]
theLons = dataset['Grid/lon'][:]
# Plot the figure, define the geographic bounds
fig = plt.figure(dpi=300)
latcorners = ([-60,60])
loncorners = ([-180,180])
m = Basemap(projection='cyl',llcrnrlat=latcorners[0],urcrnrlat=latcorners[1],llcrnrlon=loncorners[0],urcrnrlon=loncorners[1])
# Draw coastlines, state and country boundaries, edge of map.
m.drawcoastlines()
m.drawstates()
m.drawcountries()
# Draw filled contours.
clevs = np.arange(0,1.26,0.125)
# Define the latitude and longitude data
x, y = np.float32(np.meshgrid(theLons, theLats))
# Mask the values less than 0 because there is no data to plot.
masked_array = np.ma.masked_where(precip < 0,precip)
# Plot every masked value as white
cmap = cm.GMT_drywet
cmap.set_bad('w',1.)
# Plot the data
cs = m.contourf(x,y,precip,clevs,cmap=cmap,latlon=True)
parallels = np.arange(-60.,61,20.)
m.drawparallels(parallels,labels=[True,False,True,False])
meridians = np.arange(-180.,180.,60.)
m.drawmeridians(meridians,labels=[False,False,False,True])
# Set the title and fonts
plt.title('August 2015 Monthly Average Rain Rate')
font = {'weight' : 'bold', 'size' : 6}
plt.rc('font', **font)
# Add colorbar
cbar = m.colorbar(cs,location='right',pad="5%")
cbar.set_label('mm/h')
plt.savefig('testIMERGmap.png',dpi=200)
other:
index_openGESDISC_Examples.php#GPM
http://hdfeos.org/zoo/index_openGESDISC_Examples.php#GPM
GPM Applications Webinar #4 - Part 2: Python Script Demonstrations