如何在Python中读取包含卫星数据的H5文件?

gzszwxb4  于 2022-12-17  发布在  Python
关注(0)|答案(1)|浏览(394)

作为一个项目的一部分,我正在探索卫星数据,这些数据是H5格式的。我是新使用这种格式的,我无法处理数据。我可以在一个名为Panoply的软件中打开文件,并发现DHI值是以一种名为Geo 2D的格式提供的。是否有办法将数据提取为CSV格式,如下所示:
| 十|是|全球健康指数|
| - ------|- ------|- ------|
| X1| Y1||
| X2| Y2||
附上在Panoply中打开的文件的屏幕截图。
链接到文件:https://drive.google.com/file/d/1xQHNgrlrbyNcb6UyV36xh-7zTfg3f8OQ/view
我尝试了下面的代码来读取数据,我可以将其存储为一个二维numpy数组,但是不能将其与位置沿着存储。
'

import h5py
import numpy as np
import pandas as pd
import geopandas as gpd

#%%
f = h5py.File('mer.h5', 'r')

for key in f.keys():
    print(key) #Names of the root level object names in HDF5 file - can be groups or datasets.
    print(type(f[key])) # get the object type: usually group or dataset
    ls = list(f.keys())
   

key ='X'

masterdf=pd.DataFrame()

data = f.get(key)   
dataset1 = np.array(data)
masterdf = dataset1

np.savetxt("FILENAME.csv",dataset1, delimiter=",")

#masterdf.to_csv('new.csv')

enter image description here
enter image description here

oaxa6hgo

oaxa6hgo1#

找到了一种有效的方法来读取数据,将其转换为 Dataframe 并转换投影参数。
代码在此处跟踪:https://github.com/rishikeshsreehari/boring-stuff-with-python/blob/main/data-from-hdf5-file/final_converter.py
代码如下:

import pandas as pd
import h5py
import time
from pyproj import Proj, transform

input_epsg=24378
output_epsg=4326

start_time = time.time()

with h5py.File("mer.h5", "r") as file:
    df_X = pd.DataFrame(file.get("X")[:-2], columns=["X"])
    df_Y = pd.DataFrame(file.get("Y"), columns=["Y"])
    DHI = file.get("DHI")[0][:, :-2].reshape(-1)

final = df_Y.merge(df_X, how="cross").assign(DHI=DHI)[["X", "Y", "DHI"]]


final['X2'],final['Y2']=transform(input_epsg,output_epsg,final[["X"]].to_numpy(),final[["Y"]].to_numpy(),always_xy=True)

#final.to_csv("final_converted1.csv", index=False)

print("--- %s seconds ---" % (time.time() - start_time))

相关问题