#!/usr/bin/python # coding=utf-8 import os import sys import numpy as np import h5py import datetime import time import glob def hdfmake_agri(L1Filename): if '1330E' in L1Filename: l1_time = datetime.datetime.strptime(os.path.basename(L1Filename),'FY4B-_AGRI--_N_DISK_1330E_L1-_GEO-_MULT_NOM_%Y%m%d%H%M00_4000M_cloudy_profiles.dat') if '1235E' in L1Filename: l1_time = datetime.datetime.strptime(os.path.basename(L1Filename),'FY4B-_AGRI--_N_DISK_1235E_L1-_GEO-_MULT_NOM_%Y%m%d%H%M00_4000M_cloudy_profiles.dat') outpath = l1_time.strftime('/4B_AS/sim/FY4B/AGRI/ARMS/GRAPES/%Y/%Y%m%d/') if '1330E' in L1Filename: save_file = l1_time.strftime('/4B_AS/sim/FY4B/AGRI/ARMS/GRAPES/%Y/%Y%m%d/FY4B-_AGRI--_N_DISK_1330E_L1-_GEO-_MULT_NOM_%Y%m%d%H%M00_4000M_BT.HDF') if '1235E' in L1Filename: save_file = l1_time.strftime('/4B_AS/sim/FY4B/AGRI/ARMS/GRAPES/%Y/%Y%m%d/FY4B-_AGRI--_N_DISK_1235E_L1-_GEO-_MULT_NOM_%Y%m%d%H%M00_4000M_BT.HDF') h5filename = l1_time.strftime('/fy4_ads_data/stss_v2.0/Simulator/temp/FY4B/AGRI/ARMS/GRAPES/%Y/%Y%m%d/FY4B-_AGRI--_N_DISK_1330E_L1-_GEO-_MULT_NOM_%Y%m%d%H%M00_4000M.h5') try:os.makedirs(os.path.dirname(save_file)) except:pass N_Channel = 8 with h5py.File(h5filename,'r') as f: BT_SIM = f['Sim'][:] x_data = f['X'][:] y_data = f['Y'][:] lat = f['LAT'][:] lon = f['LON'][:] N_X = 2748 N_Y = 2748 N_Profiles = x_data.size BT_SIM1 = np.reshape(BT_SIM,(N_Profiles,N_Channel)) BT_SIM_Used = np.full((N_Y,N_X,N_Channel),65535,dtype=np.uintc) lat_Used = np.full((N_Y,N_X),-9999.9,dtype=np.float32) lon_Used = np.full((N_Y,N_X),-9999.9,dtype=np.float32) for iprofile in range(N_Profiles): iX = int(x_data[iprofile]) iY = int(y_data[iprofile]) BT_SIM_Used[iY-1,iX-1,0:N_Channel] = (BT_SIM1[iprofile,0:N_Channel]*100).astype(np.uintc) lat_Used[iY-1,iX-1] = lat[iprofile].astype(np.float32) lon_Used[iY-1,iX-1] = lon[iprofile].astype(np.float32) print(iX) print(BT_SIM_Used.shape) with h5py.File(save_file, 'w') as f: f.create_dataset('BT_SIM', data=BT_SIM_Used) f.create_dataset('lat',data=lat_Used) f.create_dataset('lon',data= lon_Used) print" >>", save_file, 'saved ! ' if (os.path.exists(h5filename)): os.remove(h5filename) files1 = sys.argv[1:] #/fy4_ads_data/stss_v2.0/ProduceBackgroundData/output/FY4B/AGRI/GRAPES/2024/20240125/FY4B-_AGRI--_N_DISK_1330E_L1-_GEO-_MULT_NOM_20240125200000_4000M_cloudy_profiles.dat if not files1: # print( """ usage: python {0} /fy4_ads_data/stss_v2.0/ProduceBackgroundData/output/FY4B/AGRI/GRAPES/2024/*/FY4B-_AGRI--_N_DISK_1330E_L1-_GEO-_MULT_NOM_202401*_4000M_cloudy_profiles.dat """.format(__file__)) else: import traceback for k in files1: hdfmake_agri(k)