Hello, We developed a tool last summer called h5augjpss that modifies JPSS HDF5 files so they can be accessed by netCDF-4 and netCDF-Java applications. The NPOESS files that we had to work with at that time had datasets (variables) with fixed dimensions, but the JPSS files that are currently being produced have unlimited dimensions. The C version of ncdump requires that the dimension scale datasets for variables with unlimited dimensions also have unlimited dimensions (ncdump -h of attached file included below). Files with fixed dimension variables and dimension scales with fixed dimensions can be displayed by netCDF-Java's ncdump, as can files with unlimited dimensions and no dimension scales, but files such as the attached file with unlimited dimension dimension scales result in this java exception: java.lang.IllegalStateException: should equal GCOL at ucar.nc2.iosp.hdf5.H5header$GlobalHeap.<init>(H5header.java:4704) at ucar.nc2.iosp.hdf5.H5header$HeapIdentifier.getHeapObject(H5header.java:4632) at ucar.nc2.iosp.hdf5.H5header.getHeapDataArray(H5header.java:4484) at ucar.nc2.iosp.hdf5.H5header.readAttributeData(H5header.java:828) at ucar.nc2.iosp.hdf5.H5header.makeAttribute(H5header.java:695) at ucar.nc2.iosp.hdf5.H5header.findDimensionLists(H5header.java:530) at ucar.nc2.iosp.hdf5.H5header.makeNetcdfGroup(H5header.java:391) at ucar.nc2.iosp.hdf5.H5header.read(H5header.java:194) at ucar.nc2.iosp.hdf5.H5iosp.open(H5iosp.java:112) at ucar.nc2.NetcdfFile.<init>(NetcdfFile.java:1499) at ucar.nc2.NetcdfFile.open(NetcdfFile.java:887) at ucar.nc2.NetcdfFile.open(NetcdfFile.java:496) at ucar.nc2.dataset.NetcdfDataset.openOrAcquireFile(NetcdfDataset.java:693) at ucar.nc2.dataset.NetcdfDataset.openFile(NetcdfDataset.java:565) at ucar.nc2.ui.ToolsUI$NCdumpPanel.run(ToolsUI.java:1607) at ucar.nc2.ui.ToolsUI$GetDataTask.run(ToolsUI.java:5684) at java.lang.Thread.run(Unknown Source) Is there an existing solution or workaround for this problem? Is it possible to add dimension scales for the C version of ncdump without breaking the netCDF-Java version? Thanks, Larry lrknox@koala tmp]$ ncdump -h SATMS_justdims_npp_d20120619_t1121416_e1122133_b03335_c20120619200237705890_ noaa_ops.h5 netcdf SATMS_justdims_npp_d20120619_t1121416_e1122133_b03335_c20120619200237705890_ noaa_ops { dimensions: BeamPosition = UNLIMITED ; // (96 currently) Channel = UNLIMITED ; // (22 currently) Factors = UNLIMITED ; // (2 currently) Granule = UNLIMITED ; // (7 currently) Scan = UNLIMITED ; // (12 currently) Status = UNLIMITED ; // (4 currently) Time = UNLIMITED ; // (4 currently) variables: int64 BeamPosition(BeamPosition) ; int64 BeamTime(Scan, BeamPosition) ; string BeamTime:DIMENSION_LABELS = "Scan", "BeamPosition" ; ushort BrightnessTemperature(Scan, BeamPosition, Channel) ; string BrightnessTemperature:DIMENSION_LABELS = "Scan", "BeamPosition", "Channel" ; float BrightnessTemperatureFactors(Factors) ; string BrightnessTemperatureFactors:DIMENSION_LABELS = "Factors" ; ushort Channel(Channel) ; float Factors(Factors) ; float GainCalibration(Scan, Channel) ; string GainCalibration:DIMENSION_LABELS = "Scan", "Channel" ; ubyte Granule(Granule) ; ushort InstrumentMode(Status) ; string InstrumentMode:DIMENSION_LABELS = "Status" ; float NEdTCold(Scan, Channel) ; string NEdTCold:DIMENSION_LABELS = "Scan", "Channel" ; float NEdTWarm(Scan, Channel) ; string NEdTWarm:DIMENSION_LABELS = "Scan", "Channel" ; ubyte PadByte1(Granule) ; string PadByte1:DIMENSION_LABELS = "Granule" ; ubyte QF10_GRAN_HEALTHSTATUS(Time) ; string QF10_GRAN_HEALTHSTATUS:DIMENSION_LABELS = "Time" ; ubyte QF11_GRAN_QUADRATICCORRECTION(Granule) ; string QF11_GRAN_QUADRATICCORRECTION:DIMENSION_LABELS = "Granule" ; ubyte QF12_SCAN_KAVPRTCONVERR(Scan) ; string QF12_SCAN_KAVPRTCONVERR:DIMENSION_LABELS = "Scan" ; ubyte QF13_SCAN_WGPRTCONVERR(Scan) ; string QF13_SCAN_WGPRTCONVERR:DIMENSION_LABELS = "Scan" ; ubyte QF14_SCAN_SHELFPRTCONVERR(Scan) ; string QF14_SCAN_SHELFPRTCONVERR:DIMENSION_LABELS = "Scan" ; ubyte QF15_SCAN_KAVPRTTEMPLIMIT(Scan) ; string QF15_SCAN_KAVPRTTEMPLIMIT:DIMENSION_LABELS = "Scan" ; ubyte QF16_SCAN_WGPRTTEMPLIMIT(Scan) ; string QF16_SCAN_WGPRTTEMPLIMIT:DIMENSION_LABELS = "Scan" ; ubyte QF17_SCAN_KAVPRTTEMPCONSISTENCY(Scan) ; string QF17_SCAN_KAVPRTTEMPCONSISTENCY:DIMENSION_LABELS = "Scan" ; ubyte QF18_SCAN_WGPRTTEMPCONSISTENCY(Scan) ; string QF18_SCAN_WGPRTTEMPCONSISTENCY:DIMENSION_LABELS = "Scan" ; ubyte QF19_SCAN_ATMSSDR(Scan) ; string QF19_SCAN_ATMSSDR:DIMENSION_LABELS = "Scan" ; ubyte QF1_GRAN_HEALTHSTATUS(Time) ; string QF1_GRAN_HEALTHSTATUS:DIMENSION_LABELS = "Time" ; ubyte QF20_ATMSSDR(Scan, Channel) ; string QF20_ATMSSDR:DIMENSION_LABELS = "Scan", "Channel" ; ubyte QF21_ATMSSDR(Scan, Channel) ; string QF21_ATMSSDR:DIMENSION_LABELS = "Scan", "Channel" ; ubyte QF22_ATMSSDR(Scan, Channel) ; string QF22_ATMSSDR:DIMENSION_LABELS = "Scan", "Channel" ; ubyte QF2_GRAN_HEALTHSTATUS(Time) ; string QF2_GRAN_HEALTHSTATUS:DIMENSION_LABELS = "Time" ; ubyte QF3_GRAN_HEALTHSTATUS(Time) ; string QF3_GRAN_HEALTHSTATUS:DIMENSION_LABELS = "Time" ; ubyte QF4_GRAN_HEALTHSTATUS(Time) ; string QF4_GRAN_HEALTHSTATUS:DIMENSION_LABELS = "Time" ; ubyte QF5_GRAN_HEALTHSTATUS(Time) ; string QF5_GRAN_HEALTHSTATUS:DIMENSION_LABELS = "Time" ; ubyte QF6_GRAN_HEALTHSTATUS(Time) ; string QF6_GRAN_HEALTHSTATUS:DIMENSION_LABELS = "Time" ; ubyte QF7_GRAN_HEALTHSTATUS(Time) ; string QF7_GRAN_HEALTHSTATUS:DIMENSION_LABELS = "Time" ; ubyte QF8_GRAN_HEALTHSTATUS(Time) ; string QF8_GRAN_HEALTHSTATUS:DIMENSION_LABELS = "Time" ; ubyte QF9_GRAN_HEALTHSTATUS(Time) ; string QF9_GRAN_HEALTHSTATUS:DIMENSION_LABELS = "Time" ; int64 Scan(Scan) ; ushort Status(Status) ; ubyte Time(Time) ; // global attributes: string :Distributor = "arch" ; string :Mission_Name = "NPP" ; string :N_Dataset_Source = "noaa" ; string :N_HDF_Creation_Date = "20120619" ; string :N_HDF_Creation_Time = "200237.705890Z" ; string :N_GEO_Ref = "GATMO_npp_d20120619_t1121416_e1122133_b03335_c20120619200237705890_noaa_ops .h5" ; string :Platform_Short_Name = "NPP" ; :HDF5_internal_address_of_/Data_Products = 1832UL ; :HDF5_internal_name_of_/Data_Products = "/Data_Products" ; :HDF5_internal_address_of_/All_Data = 800UL ; :HDF5_internal_name_of_/All_Data = "/All_Data" ; }
Attachment:
SATMS_justdims_npp_d20120619_t1121416_e1122133_b03335_c20120619200237705890_noaa_ops.h5
Description: Binary data
netcdf-java
archives: