Thanks @dave.allured, I assumed the files were more recent.
Below is additional diagnostic information that may help locate the problem.
Running h5stat -S
on the original .nc file:
% h5stat -S S1-GUNW-A-R-064-tops-20180528_20170521-015004-36885N_35006N-PP-baf1-v2_0_2.nc
Filename: S1-GUNW-A-R-064-tops-20180528_20170521-015004-36885N_35006N-PP-baf1-v2_0_2.nc
File space management strategy: H5F_FSPACE_STRATEGY_FSM_AGGR
File space page size: 4096 bytes
Summary of file space information:
File metadata: 105632 bytes
Raw data: 55628271 bytes
Amount/Percent of tracked free space: 0 bytes/0.0%
Unaccounted space: 8399018 bytes
Total space: 64132921 bytes
shows pretty large unaccounted space – ~8.4MB for a file of ~64MB. I don’t think this means trouble, just unexpected.
Comparing the ncdump output (from Panoply) with h5dump for the original .nc file I found strange differences. Below is h5dump description of the /matchup
HDF5 dataset that is also a netCDF dimension:
DATASET "matchup" {
DATATYPE H5T_IEEE_F32BE
DATASPACE SIMPLE { ( 0 ) / ( H5S_UNLIMITED ) }
STORAGE_LAYOUT {
CHUNKED ( 1 )
SIZE 0
}
FILTERS {
NONE
}
FILLVALUE {
FILL_TIME H5D_FILL_TIME_IFSET
VALUE H5D_FILL_VALUE_DEFAULT
}
ALLOCATION_TIME {
H5D_ALLOC_TIME_INCR
}
ATTRIBUTE "CLASS" {
DATATYPE H5T_STRING {
STRSIZE 16;
STRPAD H5T_STR_NULLTERM;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SCALAR
DATA {
(0): "DIMENSION_SCALE"
}
}
ATTRIBUTE "NAME" {
DATATYPE H5T_STRING {
STRSIZE 64;
STRPAD H5T_STR_NULLTERM;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SCALAR
DATA {
(0): "This is a netCDF dimension but not a netCDF variable. 0"
}
}
ATTRIBUTE "REFERENCE_LIST" {
DATATYPE H5T_COMPOUND {
H5T_REFERENCE { H5T_STD_REF_OBJECT } "dataset";
H5T_STD_I32LE "dimension";
}
DATASPACE SIMPLE { ( 15 ) / ( 15 ) }
DATA {
(0): {
DATASET 0 "/science/grids/corrections/derived/ionosphere/ionosphere",
0
},
(1): {
DATASET 0 "/science/grids/corrections/external/troposphere/troposphereHydrostatic",
0
},
(2): {
DATASET 0 "/science/grids/corrections/external/troposphere/troposphereWet",
0
},
(3): {
DATASET 0 "/science/grids/corrections/external/tides/solidEarthTide",
0
},
(4): {
DATASET 0 "/science/radarMetaData/missionID",
0
},
(5): {
DATASET 0 "/science/radarMetaData/productType",
0
},
(6): {
DATASET 0 "/science/radarMetaData/ISCEversion",
0
},
(7): {
DATASET 0 "/science/radarMetaData/unwrapMethod",
0
},
(8): {
DATASET 0 "/science/radarMetaData/DEM",
0
},
(9): {
DATASET 0 "/science/radarMetaData/azimuthZeroDopplerStartTime",
0
},
(10): {
DATASET 0 "/science/radarMetaData/azimuthZeroDopplerEndTime",
0
},
(11): {
DATASET 0 "/science/radarMetaData/inputSLC/reference/L1InputGranules",
0
},
(12): {
DATASET 0 "/science/radarMetaData/inputSLC/reference/orbitType",
0
},
(13): {
DATASET 0 "/science/radarMetaData/inputSLC/secondary/L1InputGranules",
0
},
(14): {
DATASET 0 "/science/radarMetaData/inputSLC/secondary/orbitType",
0
}
}
}
ATTRIBUTE "_Netcdf4Dimid" {
DATATYPE H5T_STD_I32LE
DATASPACE SCALAR
DATA {
(0): 0
}
}
}
It has no data, and its netCDF dimension size is 0, as stated in the NAME
HDF5 attribute. The value of the REFERENCE_LIST
attribute shows all the HDF5 datasets (netCDF variables) where /matchup
serves as a netCDF dimension.
However, from the ncdump for two of these netCDF variables, /science/grids/corrections/derived/ionosphere/ionosphere
and /science/radarMetaData/inputSLC/secondary/L1InputGranules
the size of the matchup
dimension is reported differently:
group: ionosphere {
dimensions:
matchup = UNLIMITED; // (1 currently)
variables:
String ionosphere(matchup=1);
:standard_name = "ionosphere";
:long_name = "ionosphere";
:_ChunkSizes = 524288U; // uint
}
above with size 1,
group: secondary {
dimensions:
matchup = UNLIMITED; // (2 currently)
variables:
String L1InputGranules(matchup=2);
:description = "Secondary input granules";
:long_name = "L1InputGranules";
:standard_name = "L1InputGranules";
:_ChunkSizes = 1U; // uint
}
and now with size 2. There is only one matchup
netCDF dimension in the file (the /matchup
HDF5 dataset) and it has 0 size. So the above two matchup
netCDF dimensions must be bogus, produced by the netCDF software trying to maintain consistency with the file content.
The last piece of information for this post is the output of h5dump that shows libhdf5 errors as it reads the .nc file. Here’s the beginning:
% h5dump --enable-error-stack=2 -p -A S1-GUNW-A-R-064-tops-20180528_20170521-015004-36885N_35006N-PP-baf1-v2_0_2.nc
HDF5-DIAG: Error detected in HDF5 (1.14.1-2) thread 1:
#000: H5O.c line 2366 in H5Otoken_to_str(): invalid location identifier
major: Invalid arguments to routine
minor: Inappropriate type
#001: H5VLint.c line 1779 in H5VL_vol_object(): invalid identifier
major: Invalid arguments to routine
minor: Inappropriate type
HDF5-DIAG: Error detected in HDF5 (1.14.1-2) thread 1:
#000: H5O.c line 2366 in H5Otoken_to_str(): invalid location identifier
major: Invalid arguments to routine
minor: Inappropriate type
#001: H5VLint.c line 1779 in H5VL_vol_object(): invalid identifier
major: Invalid arguments to routine
minor: Inappropriate type
HDF5-DIAG: Error detected in HDF5 (1.14.1-2) thread 1:
#000: H5O.c line 2366 in H5Otoken_to_str(): invalid location identifier
major: Invalid arguments to routine
minor: Inappropriate type
#001: H5VLint.c line 1779 in H5VL_vol_object(): invalid identifier
major: Invalid arguments to routine
minor: Inappropriate type
HDF5-DIAG: Error detected in HDF5 (1.14.1-2) thread 1:
#000: H5O.c line 2366 in H5Otoken_to_str(): invalid location identifier
major: Invalid arguments to routine
minor: Inappropriate type
#001: H5VLint.c line 1779 in H5VL_vol_object(): invalid identifier
major: Invalid arguments to routine
minor: Inappropriate type
HDF5-DIAG: Error detected in HDF5 (1.14.1-2) thread 1:
#000: H5O.c line 2366 in H5Otoken_to_str(): invalid location identifier
major: Invalid arguments to routine
minor: Inappropriate type
#001: H5VLint.c line 1779 in H5VL_vol_object(): invalid identifier
major: Invalid arguments to routine
minor: Inappropriate type
HDF5-DIAG: Error detected in HDF5 (1.14.1-2) thread 1:
#000: H5O.c line 2366 in H5Otoken_to_str(): invalid location identifier
major: Invalid arguments to routine
minor: Inappropriate type
#001: H5VLint.c line 1779 in H5VL_vol_object(): invalid identifier
major: Invalid arguments to routine
minor: Inappropriate type
HDF5-DIAG: Error detected in HDF5 (1.14.1-2) thread 1:
#000: H5O.c line 2366 in H5Otoken_to_str(): invalid location identifier
major: Invalid arguments to routine
minor: Inappropriate type
#001: H5VLint.c line 1779 in H5VL_vol_object(): invalid identifier
major: Invalid arguments to routine
minor: Inappropriate type
HDF5-DIAG: Error detected in HDF5 (1.14.1-2) thread 1:
#000: H5O.c line 2366 in H5Otoken_to_str(): invalid location identifier
major: Invalid arguments to routine
minor: Inappropriate type
#001: H5VLint.c line 1779 in H5VL_vol_object(): invalid identifier
major: Invalid arguments to routine
minor: Inappropriate type
HDF5-DIAG: Error detected in HDF5 (1.14.1-2) thread 1:
#000: H5O.c line 2366 in H5Otoken_to_str(): invalid location identifier
major: Invalid arguments to routine
minor: Inappropriate type
#001: H5VLint.c line 1779 in H5VL_vol_object(): invalid identifier
major: Invalid arguments to routine
minor: Inappropriate type
HDF5-DIAG: Error detected in HDF5 (1.14.1-2) thread 1:
#000: H5O.c line 2366 in H5Otoken_to_str(): invalid location identifier
major: Invalid arguments to routine
minor: Inappropriate type
#001: H5VLint.c line 1779 in H5VL_vol_object(): invalid identifier
major: Invalid arguments to routine
minor: Inappropriate type
HDF5-DIAG: Error detected in HDF5 (1.14.1-2) thread 1:
#000: H5O.c line 2366 in H5Otoken_to_str(): invalid location identifier
major: Invalid arguments to routine
minor: Inappropriate type
#001: H5VLint.c line 1779 in H5VL_vol_object(): invalid identifier
major: Invalid arguments to routine
minor: Inappropriate type
HDF5-DIAG: Error detected in HDF5 (1.14.1-2) thread 1:
#000: H5O.c line 2366 in H5Otoken_to_str(): invalid location identifier
major: Invalid arguments to routine
minor: Inappropriate type
#001: H5VLint.c line 1779 in H5VL_vol_object(): invalid identifier
major: Invalid arguments to routine
minor: Inappropriate type
HDF5-DIAG: Error detected in HDF5 (1.14.1-2) thread 1:
#000: H5O.c line 2366 in H5Otoken_to_str(): invalid location identifier
major: Invalid arguments to routine
minor: Inappropriate type
#001: H5VLint.c line 1779 in H5VL_vol_object(): invalid identifier
major: Invalid arguments to routine
minor: Inappropriate type
HDF5-DIAG: Error detected in HDF5 (1.14.1-2) thread 1:
#000: H5O.c line 2366 in H5Otoken_to_str(): invalid location identifier
major: Invalid arguments to routine
minor: Inappropriate type
#001: H5VLint.c line 1779 in H5VL_vol_object(): invalid identifier
major: Invalid arguments to routine
minor: Inappropriate type
HDF5-DIAG: Error detected in HDF5 (1.14.1-2) thread 1:
#000: H5O.c line 2366 in H5Otoken_to_str(): invalid location identifier
major: Invalid arguments to routine
minor: Inappropriate type
#001: H5VLint.c line 1779 in H5VL_vol_object(): invalid identifier
major: Invalid arguments to routine
minor: Inappropriate type
HDF5-DIAG: Error detected in HDF5 (1.14.1-2) thread 1:
#000: H5O.c line 2366 in H5Otoken_to_str(): invalid location identifier
major: Invalid arguments to routine
minor: Inappropriate type
#001: H5VLint.c line 1779 in H5VL_vol_object(): invalid identifier
major: Invalid arguments to routine
minor: Inappropriate type
HDF5-DIAG: Error detected in HDF5 (1.14.1-2) thread 1:
#000: H5O.c line 2366 in H5Otoken_to_str(): invalid location identifier
major: Invalid arguments to routine
minor: Inappropriate type
#001: H5VLint.c line 1779 in H5VL_vol_object(): invalid identifier
major: Invalid arguments to routine
minor: Inappropriate type
HDF5-DIAG: Error detected in HDF5 (1.14.1-2) thread 1:
#000: H5O.c line 2366 in H5Otoken_to_str(): invalid location identifier
major: Invalid arguments to routine
minor: Inappropriate type
#001: H5VLint.c line 1779 in H5VL_vol_object(): invalid identifier
major: Invalid arguments to routine
minor: Inappropriate type
HDF5-DIAG: Error detected in HDF5 (1.14.1-2) thread 1:
#000: H5O.c line 2366 in H5Otoken_to_str(): invalid location identifier
major: Invalid arguments to routine
minor: Inappropriate type
#001: H5VLint.c line 1779 in H5VL_vol_object(): invalid identifier
major: Invalid arguments to routine
minor: Inappropriate type
HDF5 "S1-GUNW-A-R-064-tops-20180528_20170521-015004-36885N_35006N-PP-baf1-v2_0_2.nc"
There are more of these error messages in the h5dump output. I don’t know yet what these errors imply but wanted to document it here.
Aleksandar