とらりもんHOME  Index  Search  Changes  Login

HDF4

(We assume you are using Ubuntu Linux 16.04)

What is HDF?

  • HDF is a data format which is common and popular for satellite data especially of NASA and JAXA.
  • There are HDF4 and HDF5.
  • HDF5 may be simpler and easier to understand and handle.

If you want to use HDF5, go to HDF5 page!!

Install HDF4 libraries:

$ sudo apt-get install hdf4-tools libhdf4-dev libhdf4-0 libhdf4-0-alt

HDF4 useful commands

  • to check contents of HDF4 files:
hdfls
ncdump-hdf

Handling HDF4 file in python (Ubuntu 16.04)

First, install the HDF4 module in your python3 environment.

$ sudo pip3 install python-hdf4

Let's take an example of treating this file (Terra/MODIS vegetation index) https://e4ftl01.cr.usgs.gov/MOLT/MOD13C2.006/2009.01.01/

Go into the python shell by $ ipython3 and ...

import numpy as np
from pyhdf.SD import SD, SDC   # HDF library module
hdf=SD("./MOD13C2.A2009001.006.2015186072610.hdf", SDC.READ)  # SD=scientific data
hdf.datasets()   # show details of the SD
ndvi_sds=hdf.select('CMG 0.05 Deg Monthly NDVI')   # select a SDS (scientific dataset)
ndvi=ndvi_sds.get()         # read the main body (raster data) of the SDS
nan_index=np.where(ndvi==ndvi_sds.attributes()['_FillValue'])   # locate no-data (fill value)
ndvi=ndvi / ndvi_sds.attributes()['scale_factor']   # apply scaling (digital number to real data)
ndvi[nan_index]=np.nan    # assign NaN to no-data
import matplotlib.pyplot as plt
plt.imshow(ndvi)
plt.show()
# other useful methods ...
ndvi.attributes()
ndvi.dimensions()
ndvi.get()
ndvi.getcal()
ndvi.getfillvalue()
ndvi.getrange()
ndvi.info()
# if you want to know more detail, try help(ndvi)
Last modified:2019/02/06 14:38:37
Keyword(s):
References:[HDF5]