Your dataset is just a two-dimensional array of reals; it does not an array of "arrays of reals” (This is the datatype you construct with the H5tcreate_array_f call.)
Just use H5T_NATIVE_REAL instead of memtype_aod in the h5dread_f call. Elena ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Elena Pourmal The HDF Group http://hdfgroup.org 1800 So. Oak St., Suite 203, Champaign IL 61820 217.531.6112 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ On Feb 4, 2016, at 12:00 PM, M P <[email protected]> wrote: > Hello, > this looks like a simple problem but it got me stuck. I am trying to read a > dataset but to my understanding there is some problem with conversion of data > between file format (big endian) and my linux (little endian) > h5dump output looks like that > > HDF5 > "IVAOT_npp_d20151206_t0500124_e0501366_b21279_c20151206065638288374_noaa_ops.h5" > { > GROUP "/" { > ... > GROUP "All_Data" { > GROUP "VIIRS-Aeros-Opt-Thick-IP_All" { > .... > > DATASET "faot550" { > DATATYPE H5T_IEEE_F32BE > DATASPACE SIMPLE { ( 768, 3200 ) / ( H5S_UNLIMITED, > H5S_UNLIMITED ) } > } > ... > > I want to read content of faot550. > The program looks like below and all seems to work fine until I attempt to > read the dataset > > Thanks for any suggestions/help > Mark > > ... > > CHARACTER(LEN=80), PARAMETER :: dataset_aod = & > &"/All_Data/VIIRS-Aeros-Opt-Thick-IP_All/faot550" > > TYPE(C_PTR) :: f_ptr_aod > > INTEGER(HID_T) :: file_aod, filetype_aod, memtype_aod, space_aod, > dset_aod, & > &group_aod, attr_aod ! Handles > > REAL, DIMENSION(:,:), ALLOCATABLE, TARGET :: rdata_aod > INTEGER(HSIZE_T), DIMENSION(1:2) :: dims_aod,maxdims > > TYPE(C_PTR) :: f_ptr_aod > REAL, DIMENSION(:,:), ALLOCATABLE, TARGET :: rdata_aod > > ... > > CALL h5open_f(hdferr) > PRINT *,hdferr > CALL h5fopen_f(filename_aod, H5F_ACC_RDONLY_F, file_aod, hdferr) > PRINT *,hdferr > CALL h5dopen_f(file_aod, dataset_aod, dset_aod, hdferr) > PRINT *,hdferr > CALL h5dget_space_f (dset_aod, space_aod, hdferr) > PRINT *,hdferr > CALL h5sget_simple_extent_ndims_f(space_aod, rank_aod, hdferr) > PRINT *,hdferr,rank_aod > CALL h5sget_simple_extent_dims_f(space_aod, dims_aod, maxdims, hdferr) > PRINT *,hdferr,dims_aod,maxdims > CALL h5tarray_create_f(H5T_NATIVE_REAL, rank_aod, dims_aod, memtype_aod, > hdferr) > PRINT *,hdferr,memtype_aod, rank_aod, dims_aod > ALLOCATE(rdata_aod(dims_aod(1),dims_aod(2))) > PRINT *,SIZE(rdata_aod(1,:)),SIZE(rdata_aod(:,1)) > f_ptr_aod = C_LOC(rdata_aod(1,1)) > CALL h5dread_f (dset_aod, memtype_aod, f_ptr_aod, hdferr) > PRINT *,hdferr > > .... > > > 0 > 0 > 0 > 0 > 0 2 > 2 3200 768 -1 > -1 > 0 50331790 2 3200 > 768 > 768 3200 > HDF5-DIAG: Error detected in HDF5 (1.8.14) thread 0: > #000: H5Dio.c line 173 in H5Dread(): can't read data > major: Dataset > minor: Read failed > #001: H5Dio.c line 425 in H5D__read(): unable to set up type info > major: Dataset > minor: Unable to initialize object > #002: H5Dio.c line 957 in H5D__typeinfo_init(): unable to convert between > src and dest datat\ > ype > major: Dataset > minor: Feature is unsupported > #003: H5T.c line 4532 in H5T_path_find(): no appropriate function for > conversion path > major: Datatype > minor: Unable to initialize object > #002: H5Dio.c line 957 in H5D__typeinfo_init(): unable to convert between > src and dest datat\ > ype > major: Dataset > minor: Feature is unsupported > #003: H5T.c line 4532 in H5T_path_find(): no appropriate function for > conversion path > major: Datatype > minor: Unable to initialize object > -1 > > > > _______________________________________________ > Hdf-forum is for HDF software users discussion. > [email protected] > http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org > Twitter: https://twitter.com/hdf5 _______________________________________________ Hdf-forum is for HDF software users discussion. [email protected] http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org Twitter: https://twitter.com/hdf5
