[netcdf-java] HDF5 files with dimension scales for unlimited dimensions cause java exception: " should equal GCOL"

  • To: <netcdf-java@xxxxxxxxxxxxxxxx>
  • Subject: [netcdf-java] HDF5 files with dimension scales for unlimited dimensions cause java exception: " should equal GCOL"
  • From: "Larry Knox" <lrknox@xxxxxxxxxxxx>
  • Date: Wed, 20 Jun 2012 12:12:01 -0500
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

  • 2012 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the netcdf-java archives: