因为想做一些关于海冰的研究,所以下载了数据,数据格式为.HDF格式,目前已经可以读取这些数据并且能够输出在一个.csv文件中,想用fortran对这些数据进行一下处理,但是不知道怎么读这种形式的文件。
HDF文件是通过python读取的。
5条回答 默认 最新
- chuifengde 2023-01-19 01:52关注本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
from pyhdf.SD import SD, SDC from pyhdf.HDF import HDF from pyhdf.VS import VS import numpy as np import pandas as pd # Change this to input full path of input file fname = '/Users/wudiran/desktop/2006335045240_03158_CS_CRYOSPHERE-AUX_GRANULE_P_R05_E02_F00.hdf' # Read 3D data f = SD(fname, SDC.READ) sds_obj = f.select('Age') age = sds_obj.get() sds_obj = f.select('Extent') extent = sds_obj.get() sds_obj = f.select('NISE_latitude') NISE_latitude = sds_obj.get() sds_obj = f.select('NISE_longitude') NISE_longitude = sds_obj.get() sds_obj = f.select('NISE_pixel_index_x') NISE_pixel_index_x = sds_obj.get() sds_obj = f.select('NISE_pixel_index_y') NISE_pixel_index_y = sds_obj.get() f.end() #----------------------------------------------------- #create dataframe df = pd.DataFrame() #age_list = list(age) extent_list = list(extent) nise_latitude_list = list(NISE_latitude) nise_longitude_list = list(NISE_longitude) df['nise_latitude_list'] = nise_latitude_list df['nise_longitude_list'] = nise_longitude_list df['extent'] = extent_list #print(np.mean(df['nise_latitude_list'][0])) average #print(np.mean(df['nise_longitude_list'][0])) average print(df) df.to_csv('/Users/wudiran/desktop/climate_data.csv') #----------------------------------------------------- # Read 2D data f = HDF(fname) vs = f.vstart() profile_time = [] vd = vs.attach('Profile_time') for rec in vd[:]: profile_time.append(rec[0]) profile_time = np.array(profile_time) # Read 1D data vd = vs.attach('UTC_start') UTC_start = vd[0][0] vd = vs.attach('TAI_start') TAI_start = vd[0][0] vs.end() #f.close() ```python
赞回复