📄 cdn_field_range_dialogue.pro
字号:
;--------------------------------------------------------------------------------pro cdn_field_range_dialogue, infopro_name = 'cdn_field_range_dialogue'@getinfowidget_control, /hourglasssubset_name = info.vfield.name_selsubset_name = subset_name(0)subset_name=info.vfield.name_sel + $ '[' + strcompress(string(info.subset.count)) +']'widget_control, info.widgets.current_file, get_value=filename the_vdata_name=info.vdata.name_selvdata_ref=info.vdata.refthe_name = info.vfield.name_selthe_index = info.vfield.indices_selnlayer = info.hdf5.nlayercurrent_data_name = ''for j = 1, nlayer do begin if strlen(info.hdf5.name_string[j]) gt 0 then begin current_data_name = current_data_name + '/' + info.hdf5.name_string[j] endifendforcurrent_data_name = current_data_name + '/' + the_vdata_nameif info.show_attr gt 0 then begin get_data_attr,filename,current_data_name, the_index, 2, info if info.show_attr eq 2 then returnendif; Open a HDF5 filefileid = open_hdf5_file(filename)if fileid eq -1 then begin result=dialog_message('Problem open HDF5 file!',$ title='View HDF Warning!') returnendif; Open the datasetdataset_id = H5D_OPEN(fileid, current_data_name)the_result = get_cdn_field_type(dataset_id, the_index, the_types, sds_rank, $ sds_dims); Get the dataspace iddataspace_id = H5D_GET_SPACE(dataset_id); Get the dimension sizes and rank for recordrec_rank = H5S_GET_SIMPLE_EXTENT_NDIMS(dataspace_id)rec_dims = H5S_GET_SIMPLE_EXTENT_DIMS(dataspace_id, MAX_DIMENSIONS=max_dims)if sds_rank gt 0 then begin sds_rank = sds_rank + rec_rank sds_dims = [sds_dims, rec_dims]endif else begin sds_rank = rec_rank sds_dims = [rec_dims]endelse;if info.rangetype.type eq 2 then begin; read_vdata_multiple_files, filename, the_vdata_name, vdata_ref, the_name, $; the_index, the_order, the_types, the_result, info; return;endifsds_dims = reverse(sds_dims)info.sds.rank = sds_rankinfo.sds.dims = sds_dimsinfo.sds.type = the_typesprint,'dataset name = ',current_data_nameprint,'field_name = ',info.vfield.name_selprint,'rank = ',sds_rankprint,'dimension = ',sds_dimsprint,'sds_type = ', the_typesunit_list = [the_result]if the_result ne 'BAD' then info.unitname = ', '+unit_list[0] else info.unitname = ''info = redefine_info( info, unit_list, 7)close_hdf5_dataspace, dataspace_idH5D_CLOSE, dataset_idH5F_CLOSE, fileidinfo.rangetype.dim_name(*) = ''for i = 0 , sds_rank-1 do begin info.rangetype.dim_name(i) = 'Dimension ' + strcompress(string(i+1),/REMOVE_ALL)endforinfo.vdata.nrec=sds_dims(0)rank = sds_rank - 1if info.rangetype.type eq 1 then begin info.rangetype.flag = 0 get_time_range, subset_name, rank, info widget_control, get_uvalue=info, info.base if info.canceloption eq 'Yes' then begin info.canceloption = 'No' widget_control, set_uvalue=info, info.base return endif if info.rangetype.flag eq 0 then begin info.rangetype.type = 0 widget_control, info.rangetype.widget, set_droplist_select=info.rangetype.type endifendifif info.rangetype.type eq 0 or info.rangetype.flag eq 1 then $ record_range_buttons, subset_name, rank, 'read_hdf5_cdn_dataCB', info $else returnwidget_control, info.widgets.vdata, set_list_select=-1end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -