# -*- coding: utf-8 -*-
import os
import h5py
import numpy as np
from config import CONFIG
def h5read(filename,uploadDataFile):
h5py_obj = h5py.File(filename)
h5py_attrs = h5py_obj.attrs
# 读取属性信息 左上角以及右下角经纬度信息,两个分辨率信息
try:
if not isinstance(h5py_attrs['Left-Top X'], np.ndarray):
max_lat = h5py_attrs['Left-Top X']
max_lon = h5py_attrs['Right-Bottom Y']
min_lat = h5py_attrs['Right-Bottom X']
min_lon = h5py_attrs['Left-Top Y']
else:
max_lat = np.array(h5py_attrs['Left-Top X'])
max_lon = np.array(h5py_attrs['Right-Bottom Y'])
min_lat = np.array(h5py_attrs['Right-Bottom X'])
min_lon = np.array(h5py_attrs['Left-Top Y'])
except:
max_lat = h5py_attrs['Maximum Latitude']
max_lon = h5py_attrs['Maximum Lonitude']
min_lat = h5py_attrs['Minimum Latitude']
min_lon = h5py_attrs['Minimum Lonitude']
try:
lat_precision = h5py_attrs['Resolution X']
lon_precision = h5py_attrs['Resolution Y']
except:
lat_precision = h5py_attrs['Latitude Precision']
lon_precision = h5py_attrs['Lonitude Precision']
# print max_lon,max_lat,min_lon,min_lat
# 读取数据集信息
sat = uploadDataFile.split("/")[5]
ins = uploadDataFile.split("/")[7]
ptype = uploadDataFile.split("/")[9]
prod = uploadDataFile.split("/")[8]
# print sat,ins,ptype,prod
global ptype,prod
productparams = CONFIG[sat][ins][ptype][prod]
for dsName in productparams[0]:
print 'dsname =============> ',dsName
# 读取数据集
with h5py.File(filename, 'r') as f:
dset = f[dsName][:]
# print dset
# 标准化数据集名称
if '_' in dsName:
dsname = dsName.split("_")
dsName = ""
length = len(dsname)
for i in dsname:
dsName = dsName + i
length = length - 1
if length>0:
dsName = dsName + "-"
# print dsName
if ' ' in dsName:
dsname = dsName.split(" ")
dsName = ""
length = len(dsname)
for i in dsname:
dsName = dsName + i
length = length - 1
if length>0:
dsName = dsName + "-"
# print dsName
if "/" in dsName:
dsname = dsName.split("/")
dsName = ""
length = len(dsname)
for i in dsname:
dsName = dsName + i
length = length - 1
if length>0:
dsName = dsName + "-"
# print dsName
# # 更换产品数据集为标准格式:PROD-POAD-A,PROD-POAD-D,PROD-POAT-A,PROD-POAT-D,PROD-POAM-A,PROD-POAM-D
if "-" in dsName:
dsName = dsName.lower()
dsname = dsName.split("-")
if 'day' in dsname or 'ascending' in dsname or 'a' in dsname or 'd' in dsname or 'ascend' in dsname:
# print "oooooooooooohhhhhhhh",dsname
DorNFlag = 'A'
elif 'night' in dsname or 'descending' in dsname or 'n' in dsname or 'descend' in dsname or 'nig' in dsname:
DorNFlag = 'D'
else:
DorNFlag = 'X'
dsName = prod + "-" + ptype + "-" + DorNFlag
# print dsName
# 写入数据集
# 写入属性信息
with h5py.File('test.HDF', 'a') as k:
k.create_dataset(dsName, data=dset)
k.attrs['Left-Top X'] = max_lon
k.attrs['Right-Bottom Y'] = max_lon
k.attrs['Right-Bottom X'] = min_lat
k.attrs['Left-Top Y'] = min_lon
k.attrs['Maximum Latitude'] = max_lat
k.attrs['Maximum Lonitude'] = max_lon
k.attrs['Minimum Latitude'] = min_lat
k.attrs['Minimum Lonitude'] = min_lon
k.attrs['Resolution X'] = lat_precision
k.attrs['Resolution Y'] = lon_precision
if __name__ == '__main__':
uploadDataFile = "/GXZC/home/lvyuanyang/shkdata/FY3D/L3/MERSI/OLR/POAD/FY3D_MERSI_Latlon_L3_OLR_GBAL_20220302000000_20220302235959_5000M_POAD_X.HDF"
h5read("C:\Users\XHD\Desktop\h5py\FY3D_MERSI_Latlon_L3_OLR_GBAL_20210101000000_20210101235959_5000M_POAD_X.HDF",uploadDataFile)
# h5write()
config配置文件自行构建



