Python 批量处理 ICESat-2 ATL08 数据

改编内容,原文链接:​​​​​​ICESat2学习笔记10 :python批量读取处理ATL08数据_晚秋10的博客-CSDN博客

如果报错KeyError: 'Unable to open object (component not found)',请先检查h5存放路径是否只包含源数据*.h5。

代码包括了简单数据筛选以及批量导出csv,代码如下:

import pandas as pd
import h5py
import os
import numpy as np


def read_atl08(fname):
    # Each beam is a group, strong beams are selected only here
    group = ['/gt1r', '/gt2r', '/gt3r']

    # Loop trough beams
    for k, g in enumerate(group):
        with h5py.File(fname, 'r') as fi:
            # Define the variables and construction, open the h5 files and check it out
            lat = fi[g + '/land_segments/latitude'][:]
            lon = fi[g + '/land_segments/longitude'][:]
            h_canopy = fi[g + '/land_segments/canopy/h_canopy'][:]
            h_canopy_uncertainty = fi[g + '/land_segments/canopy/h_canopy_uncertainty'][:]
        result = pd.DataFrame()
        result['lon'] = lon
        result['lat'] = lat
        result['h_canopy'] = h_canopy
        result['h_canopy_uncertainty'] = h_canopy_uncertainty
        # Filter the data
        dropindex = np.where((np.array(result['h_canopy'].values) < 3) | (np.array(result['h_canopy'].values) > 120) | (
                    np.array(result['h_canopy_uncertainty'].values) > 20))
        dropindex = np.array(dropindex).flatten()
        result = result.drop(index=list(dropindex))
        ofilecsv = fname.replace('.h5', '_' + g[1:] + '.csv')
        print('out ->', ofilecsv)
        result.to_csv(ofilecsv, index=None)


def readMultiH5(dir):
    # Iterate the dir, deal with all h5 files
    # For root_dir, sub_dir, files in os.walk(r'' + dir):
    for root_dir, sub_dir, files in os.walk(dir):
        for file in files:
            if file.endswith('h5'):
                # Absolute path
                file_name = os.path.join(root_dir, file)
                read_atl08(file_name)


# Execute
root_dir = r'H:\XXX'  # Root path
readMultiH5(root_dir)
print('done')

如果遇到问题或者提供建议,欢迎留言,也可联系QQ:1262840380

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值