# -*- coding: utf-8 -*- #!/usr/local/bin/python """ Description : ------------- BUT REALISER UNE MOYENNE D'IMAGE SUR JEU DE DONNEEES A LA FOIS TEMPORELLE (fichier(s) en entrée) ET SPATIALE (subsetting) Usage : ------- EN COMMANDES UNIX : exemple : python MEAN_IMAGE.py -s [valeurs_du_subsetting] -d nom_du_sds -f filename (pour l'enregistrment en .png ou hdf) chemin_de_lecture_du_ou_des_fichiers.hdf + autres options Example : --------- Prerequisites : --------------- python >= 2.5 ; not tested but probably all versions Author : -------- CGTD-ICARE/UDEV Nicolas THOMAS ( nicolas.thomas-at-icare.univ-lille1.fr ) License : --------- This file must be used under the terms of the CeCILL. This source file is licensed as described in the file COPYING, which you should have received as part of this distribution. The terms are also available at http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt History : --------- v0.0.0 : 2009/12/01 - creation """ import sys,re from Average_management import prog_options,get_name_sds,image_size,subsetting from pyhdf.SD import* from hdf2img.data2img import * def get_display_save_image(options,args,row_min,row_max,col_min,col_max) : if options.sensor is None : msg="Error : the sensor's name must be indicated. Example : -r SEVIRI, -r PARASOL, -r MODIS, ..." raise ValueError(msg) hdf_name=args[0] if re.search('/',args[0]) : f=hdf_name.split('/')[-1] hdf_name_im=str(f[:-4]) else : hdf_name_im=str(args[0][:-4])+'_' hdf_file = SD(hdf_name) datasets=hdf_file.datasets().keys() for name in datasets : if re.search('nb_data',name): sds=hdf_file.select(name).get() sds=sds[row_min:row_max,col_min:col_max] sds_numpy_obj=data2img(sds,colormap="blue_red") filename=options.output_directory+'/'+hdf_name_im+'_'+name+'.png' sds_numpy_obj.save(filename) elif re.search('mean',name): if re.search('SEVIRI',options.sensor): options.valmin=0. options.valmax=256. sds=hdf_file.select(name).get() sds=sds[row_min:row_max,col_min:col_max] sds_numpy_obj=data2img(sds,colormap="met",val_min=options.valmin,val_max=options.valmax) filename=options.output_directory+'/'+hdf_name_im+'_'+name+'.png' sds_numpy_obj.save(filename) else : sds=hdf_file.select(name).get() sds=sds[row_min:row_max,col_min:col_max] if options.valmax is None : options.valmax=sds.max() if options.valmin is None : options.valmin=sds.min() _fill_value=hdf_file.select(name).getfillvalue() sds_numpy_obj=data2img(sds,colormap="blue_red",val_min=options.valmin,val_max=options.valmax,invalid_val=_fill_value) filename=options.output_directory+'/'+hdf_name_im+'_'+name+'.png' sds_numpy_obj.save(filename) else : if re.search('SEVIRI',options.sensor): options.valmin=0. options.valmax=256. sds=hdf_file.select(name).get() sds=sds[row_min:row_max,col_min:col_max] sds_numpy_obj=data2img(sds,colormap="met",val_min=options.valmin,val_max=options.valmax) filename=options.output_directory+'/'+hdf_name_im+'_'+name+'.png' sds_numpy_obj.save(filename) else : sds=hdf_file.select(name).get() sds=sds[row_min:row_max,col_min:col_max] _fill_value=hdf_file.select(name).getfillvalue() valmin=sds.min() valmax=sds.max() sds_numpy_obj=data2img(sds,colormap="blue_red",val_max=valmax,val_min=valmin) filename=options.output_directory+'/'+hdf_name_im+'_'+name+'.png' sds_numpy_obj.save(filename) # #_____________________________________________________ # def main() : print " ----------------------------- Save hdf's datasets to .png ---------------------------" print "\n" list_parameters=sys.argv options,args=prog_options ( list_parameters ) sds_name=options.dataset sds_name=get_name_sds(options,args) lin,col=image_size(args,sds_name,options) row_min,row_max,col_min,col_max=subsetting(options,lin,col) im=get_display_save_image(options,args,row_min,row_max,col_min,col_max) print " ---------------------- Fin du programme Average_display_image.py --------------------" # #_____________________________________________________ # if __name__== "__main__": import time start_time=time.time() main() end_time=time.time() print "elapsed time :"+time.strftime("%H:%M:%S",time.gmtime(end_time-start_time))+"######\n"