读取/打开modis aqua .hdf文件并在gdal和matplotlib中显示/绘制输出

doo*_*doo 1 python image gdal python-2.7 pyhdf

我已经尝试并搜索如何解决这个问题,但仍无法找到如何在给定的Modis Aqua .hdf文件中读取和绘制gdal和matplotlib的方法.任何帮助深表感谢.顺便说一句,在Windows 7中使用Python 2.7.5.文件名是A2014037040000.L2_LAC.SeAHABS.hdf.在hdf文件的地球物理数据中,我将只使用chlor_a.

更新:

这是示例文件的链接.

A2014037040500.L2_LAC.SeAHABS.hdf

Rut*_*ies 5

HDF的诀窍是大多数时候你需要一个特定的子数据集.如果您使用GDAL,则需要打开直接指向该子数据集的HDF:

import gdal
import matplotlib.pyplot as plt

ds = gdal.Open('HDF4_SDS:UNKNOWN:"MOD021KM.A2013048.0750.hdf":6')
data = ds.ReadAsArray()
ds = None

fig, ax = plt.subplots(figsize=(6,6))

ax.imshow(data[0,:,:], cmap=plt.cm.Greys, vmin=1000, vmax=6000)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

你也可以打开'main'HDF文件并检查子数据集,然后从那里开始:

# open the main HDF
ds = gdal.Open('MOD021KM.A2013048.0750.hdf')

# get the path for a specific subdataset
subds = [sd for sd, descr in ds.GetSubDatasets() if descr.endswith('EV_250_Aggr1km_RefSB (16-bit unsigned integer)')][0]

# open and read it like normal
dssub = gdal.Open(subds)
data = dssub.ReadAsArray()
dssub = None

ds = None
Run Code Online (Sandbox Code Playgroud)