GOME数据后缀为xdr
感谢张洋老师提供的读取程序:CSDN:梦雨璃愁
数据url:https://lweb.cfa.harvard.edu/~xliu/GMLV3/
官方文档给出的读取方式为IDL(restore方式):
以下是包含的数据字段:
;print,LONS
;print,ALB
;print,NLON
;print,NLAT
;print,LATS
; AVGK
; CFRAC
; CTP
; DFS
; FILENAME
; NL
; NMEAS
; NTP
; OZAPROF
; OZPROF
; PPROF
; PS
; PT
; RES
; SCO
; TCO
; TDFS
; TOTAREA
; TOZ
; TPROF
; UNITAREA
; ZPROF
下面将其完整代码列出,将xdr复写成h5数据:
pro xdr_test
input_dir='D:\GOME\source_data\'
output_dir='D:\GOME\h5\'
file_list=file_search(input_dir,'*.xdr')
for file_i=0,n_elements(file_list)-1 do begin
restore,file_list[file_i],DESCRIPTION=variable,/verbose
file_id=h5f_create(output_dir+file_basename(file_list[file_i])+'.h5')
att_value_temp=FILENAME
datatype_id=h5t_idl_create(att_value_temp)
dataspace_id=h5s_create_simple([1])
attr_id=h5a_create(file_id,'Description',datatype_id,dataspace_id)
h5a_write,attr_id,att_value_temp
data_group_id=h5g_create(file_id,'All Data')
creat_attribution,LONS,'LONS',data_group_id
creat_attribution,ALB,'ALB',data_group_id
creat_attribution,NLON,'NLON',data_group_id
creat_attribution,NLAT,'NLAT',data_group_id
creat_attribution,LATS,'LATS',data_group_id
creat_attribution,AVGK,'AVGK',data_group_id
creat_attribution,CFRAC,'CFRAC',data_group_id
creat_attribution,CTP,'CTP',data_group_id
creat_attribution,DFS,'DFS',data_group_id
creat_attribution,NL,'NL',data_group_id
creat_attribution,NMEAS,'NMEAS',data_group_id
creat_attribution,NTP,'NTP',data_group_id
creat_attribution,OZAPROF,'OZAPROF',data_group_id
creat_attribution,OZPROF,'OZPROF',data_group_id
creat_attribution,PPROF,'PPROF',data_group_id
creat_attribution,PS,'PS',data_group_id
creat_attribution,PT,'PT',data_group_id
creat_attribution,RES,'RES',data_group_id
creat_attribution,SCO,'SCO',data_group_id
creat_attribution,TCO,'TCO',data_group_id
creat_attribution,TDFS,'TDFS',data_group_id
creat_attribution,TOTAREA,'TOTAREA',data_group_id
creat_attribution,TOZ,'TOZ',data_group_id
creat_attribution,TPROF,'TPROF',data_group_id
creat_attribution,UNITAREA,'UNITAREA',data_group_id
creat_attribution,ZPROF,'ZPROF',data_group_id
h5f_close,file_id
print,output_dir+file_basename(file_list[file_i])+'.h5 has been writen!'
endfor
end
pro creat_attribution,data,data_name,data_group_id
target_data=data
data_size=size(target_data)
print,data_size
dataset_name=data_name
datatype_id=h5t_idl_create(target_data)
if data_size[0] eq 0 then begin
dataspace_id=h5s_create_simple([1])
dataset_id=h5d_create(data_group_id,dataset_name,datatype_id,dataspace_id,$
chunk_dimension=[1],gzip=9)
h5d_write,dataset_id,target_data
; att_value_temp=data
; dataspace_id=h5s_create_simple([1])
; attr_id=h5a_create(dataset_id,string(data),datatype_id,dataspace_id)
; h5a_write,attr_id,att_value_temp
endif
if data_size[0] eq 1 then begin
data_col=data_size[1]
dimension=data_col
dataspace_id=h5s_create_simple(data_col)
dataset_id=h5d_create(data_group_id,dataset_name,datatype_id,dataspace_id,$
chunk_dimension=dimension,gzip=9)
h5d_write,dataset_id,target_data
endif
if data_size[0] eq 2 then begin
data_col=data_size[1]
data_line=data_size[2]
dimension=[data_col,data_line]
dataspace_id=h5s_create_simple([data_col,data_line])
dataset_id=h5d_create(data_group_id,dataset_name,datatype_id,dataspace_id,$
chunk_dimension=dimension,gzip=9)
h5d_write,dataset_id,target_data
endif
if data_size[0] eq 3 then begin
data_col=data_size[1]
data_line=data_size[2]
data_3d=data_size[3]
dimension=[data_col,data_line,data_3d]
dataspace_id=h5s_create_simple([data_col,data_line,data_3d])
dataset_id=h5d_create(data_group_id,dataset_name,datatype_id,dataspace_id,$
chunk_dimension=dimension,gzip=9)
h5d_write,dataset_id,target_data
endif
end