73 lines
2.9 KiB
Python
73 lines
2.9 KiB
Python
#!/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)
|
|
|