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!!
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)
Keyword(s):
References:[HDF5]