#!/usr/bin/env python

from pyhdf.SD import SD, SDC 

import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
import matplotlib.cm as cm
import calendar
import pprint

#----------------------------------------------------------------------------------------#
# Inputs

file_name = 'MYD04_L2.A2015190.0010.006.2015190191844.hdf'

#----------------------------------------------------------------------------------------#
# Extract Year, Month, Day, Hour and Minutes from file name

path = file_name.split('/')
name = path[len(path)-1]
list = name.split('.')

hhmm = list[2]
hh = int(hhmm[0:2])
mm = int(hhmm[2:4])

year = int(list[1][1:5])
dayofyear = int(list[1][5:8])

month = 1
day = dayofyear
while day - calendar.monthrange(year,month)[1] > 0 and month <= 12:
	day = day - calendar.monthrange(year,month)[1]
	month = month + 1

#print year, month, day, hh, mm

#----------------------------------------------------------------------------------------#
# Read HDF Files

file = SD(file_name, SDC.READ)

data_selected_id = file.select('Cloud_Pixel_Distance_Land_Ocean')

attributes = data_selected_id.attributes()

data = data_selected_id.get()

#print data
#print data_selected_id.info()
#pprint.pprint( attributes )
print data.max()
#print data.shape

_FillValue = attributes['_FillValue']

#----------------------------------------------------------------------------------------#
# Plot data

data[ data == _FillValue ] = 0.0

data = data * attributes['scale_factor']

cmap = [(0.0,0.0,0.0)] + [(cm.jet(i)) for i in xrange(1,256)] 
cmap = mpl.colors.ListedColormap(cmap)

bounds = [0.0,0.0001,10,20,30,40,50,60,70,80,90,100]

norm = mpl.colors.BoundaryNorm(bounds, cmap.N)

img = plt.imshow(np.fliplr(data), cmap=cmap, norm=norm,
                  interpolation='none', origin='lower')                  
                         
plt.xticks([0,500,1000,1500,2000,2500], 
           ['0','500','1000','1500','2000','2500'], rotation=0, fontsize=8 )
plt.yticks([1000,2000,3000,4000], 
           ['1000','2000','3000','4000'], 
           rotation=0, fontsize=8 )

title = 'Cloud Pixel Distance Land Ocean \n MYD04 C6 ({}-{:02d}-{:02d}; {:02d}h{:02d})'
plt.title(title.format( year, month, day, hh, mm), fontsize=10)

cbar_bounds = [0.0,10,20,30,40,50,60,70,80,90,100]
cbar_ticks = [0.0,10,20,30,40,50,60,70,80,90,100] 

cbar = plt.colorbar(img, cmap=cmap, norm=norm, boundaries=cbar_bounds, ticks=cbar_ticks)
cbar.ax.set_yticklabels(cbar_ticks, fontsize=8)

plt.savefig("myd04_c6_Cloud_Pixel_Distance_Land_Ocean.png", 
            bbox_inches='tight', dpi=200)
plt.show()

Infos

Main author / Auteur principal:
Ben

Created / Créé: 2017-04-24

Edited / Modifié: 2017-04-24

License / Licence: MIT License

Abstract / Résumé