HDF转CSV CSV转tif

这篇博客分享了如何使用Python将HDF文件转换为CSV,并将CSV文件转换为TIFF格式。代码包括从HDF文件中提取数据,然后将数据写入CSV文件,以及将CSV文件的数据转换为地理TIFF文件的过程,涉及到的数据包括经纬度和CO2浓度等。文章还提到了在Python3环境下可能遇到的库安装问题。

HDF转CSV CSV转tif

网上基本没有这些代码,需要的可以看看,仅供参考
HDF直接转成Tif的也有代码,可以看看我的其他博文

HDF转CSV

from pyhdf.SD import SD
import  numpy as np
import os

filepath="E:\CO2" #文件位置,存放hdf文件的文件夹
filenames=os.listdir(filepath)
print(filenames)

for i,filename in enumerate(filenames):
    pathhdf=filepath+'\\'+filename
    print(pathhdf)
    hdfarr = pathhdf.split("\\")[-1].split("_")[2].split(".")
    csvname = pathhdf.split("\\")[-1].split(".")[0] + "." + pathhdf.split("\\")[-1].split(".")[1]
    print(hdfarr)
    y = hdfarr[0]
    m = hdfarr[1]
    ylist = []
    mlist = []

    for i in range(41 * 71):
        ylist.append(y)
        mlist.append(m)

    hdf = SD(pathhdf)

    print(hdf.info())  # 信息类别数

    data = hdf.datasets()
    a = []
    b = []
    CO2Amount_grid = []
    for i in data:
        print(i)  # 具体类别
        Lat = hdf.select(i)[:]
        lat = np.array(Lat)
        print(lat
提供的引用内容中未提及ICESat2数据的换方法相关信息,无法根据引用准确回答该问题。不过一般来说,ICESat - 2数据通常以HDF5格式存储,其换方法可能因目标格式和具体需求而异。以下是一些常见的换思路: ### 换为CSV或文本格式 可以使用Python的`h5py`库读取HDF5文件,然后将数据提取并保存为CSV或文本文件。示例代码如下: ```python import h5py import pandas as pd # 打开HDF5文件 with h5py.File('your_icesat2_file.h5', 'r') as f: # 假设你要提取某个数据集 dataset = f['path/to/your/dataset'][:] df = pd.DataFrame(dataset) # 保存为CSV文件 df.to_csv('output.csv', index=False) ``` ### 换为NetCDF格式 可以使用`xarray`库,它能方便地处理多维数据并进行格式换。示例代码如下: ```python import xarray as xr # 打开HDF5文件 ds = xr.open_dataset('your_icesat2_file.h5', engine='h5netcdf') # 保存为NetCDF文件 ds.to_netcdf('output.nc') ``` ### 换为GeoTIFF格式 如果要将ICESat - 2数据换为GeoTIFF格式,用于地理空间分析,可以使用`rasterio`库。不过这通常需要对数据进行一些预处理,使其具有合适的地理参考信息。示例代码如下: ```python import rasterio import numpy as np # 假设data是处理好的二维数组,transform是地理变换信息 data = np.random.rand(100, 100) transform = rasterio.transform.from_origin(0, 0, 1, 1) # 创建GeoTIFF文件 with rasterio.open( 'output.tif', 'w', driver='GTiff', height=data.shape[0], width=data.shape[1], count=1, dtype=data.dtype, crs='EPSG:4326', transform=transform, ) as dst: dst.write(data, 1) ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值