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" ;
}
_______________________________________________
netcdf-java mailing list
netcdf-java@xxxxxxxxxxxxxxxx
For list information or to unsubscribe, visit:
http://www.unidata.ucar.edu/mailing_lists/