如何使用Python读取IMERG数据

如何使用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数据,而不仅仅是月度估算。
图1:GPM_3IMERGM的 GES DISC搜索结果示例。

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

https://pmm.nasa.gov/training

get test data

欢迎关注榴莲气象

你可能感兴趣的:(如何使用Python读取IMERG数据)