栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【python-h5py】代码笔记

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【python-h5py】代码笔记

# -*- 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配置文件自行构建

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/834529.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号