Code in kotlin lang, but I guess it's clear and easy to understand.
The path of Node is /HDFEOS/GRIDS/OMI Column Amount O3/Data Fields/
// check if `Node` is `Group`
if (node !is Group) return
// iteration operation of the group
// it - is a child element of group
node.forEach {
logDepth(it, depth + 1, maxDepth, prefix)
}
Size: 36116430 [main] INFO io.jhdf.HdfFile - jHDF version: 0.5.7
3 [main] INFO io.jhdf.HdfFile - Opening HDF5 file '/Users/alexnuts/repositories/ozon_nasa_data_parser/src/main/resources/OMI-Aura_L3-OMTO3e_2020m0827_v883-2020m0827t205457.he5'...
18 [main] DEBUG io.jhdf.HdfFile - Found valid signature at offset = 0
18 [main] DEBUG io.jhdf.Superblock - Version of superblock is = 0
29 [main] DEBUG io.jhdf.ObjectHeader - Creating lazy object header at address: 928
31 [main] DEBUG io.jhdf.GroupImpl - Created root group of file 'OMI-Aura_L3-OMTO3e_2020m0827_v883-2020m0827t205457.he5'
31 [main] INFO io.jhdf.HdfFile - Opened HDF5 file '/Users/alexnuts/repositories/ozon_nasa_data_parser/src/main/resources/OMI-Aura_L3-OMTO3e_2020m0827_v883-2020m0827t205457.he5'
57 [main] INFO io.jhdf.GroupImpl - Lazy loading children of '//'
57 [main] DEBUG io.jhdf.ObjectHeader - Lazy initializing object header at address: 928
65 [main] DEBUG io.jhdf.object.message.Message - Read message: io.jhdf.object.message.SymbolTableMessage@1cf4f579
65 [main] DEBUG io.jhdf.object.message.Message - Read message: io.jhdf.object.message.NilMessage@18769467
65 [main] DEBUG io.jhdf.ObjectHeader - Read object header from address: 944
126 [main] DEBUG io.jhdf.GroupImpl - Loading 'old' style group
130 [main] DEBUG io.jhdf.ObjectHeader - Creating lazy object header at address: 1576
130 [main] DEBUG io.jhdf.GroupImpl - Created group '/HDFEOS/'
130 [main] DEBUG io.jhdf.ObjectHeader - Creating lazy object header at address: 4504
130 [main] DEBUG io.jhdf.GroupImpl - Created group '/HDFEOS INFORMATION/'
--GroupImpl::HDFEOS
132 [main] INFO io.jhdf.GroupImpl - Lazy loading children of '/HDFEOS/'
132 [main] DEBUG io.jhdf.ObjectHeader - Lazy initializing object header at address: 1576
132 [main] DEBUG io.jhdf.object.message.Message - Read message: io.jhdf.object.message.SymbolTableMessage@16f65612
132 [main] DEBUG io.jhdf.object.message.Message - Read message: io.jhdf.object.message.NilMessage@311d617d
132 [main] DEBUG io.jhdf.ObjectHeader - Read object header from address: 1592
132 [main] DEBUG io.jhdf.GroupImpl - Loading 'old' style group
132 [main] DEBUG io.jhdf.ObjectHeader - Creating lazy object header at address: 2552
132 [main] DEBUG io.jhdf.GroupImpl - Created group '/HDFEOS/ADDITIONAL/'
132 [main] DEBUG io.jhdf.ObjectHeader - Creating lazy object header at address: 5752
132 [main] DEBUG io.jhdf.GroupImpl - Created group '/HDFEOS/GRIDS/'
----GroupImpl::ADDITIONAL
132 [main] INFO io.jhdf.GroupImpl - Lazy loading children of '/HDFEOS/ADDITIONAL/'
132 [main] DEBUG io.jhdf.ObjectHeader - Lazy initializing object header at address: 2552
132 [main] DEBUG io.jhdf.object.message.Message - Read message: io.jhdf.object.message.SymbolTableMessage@7c53a9eb
132 [main] DEBUG io.jhdf.object.message.Message - Read message: io.jhdf.object.message.NilMessage@ed17bee
132 [main] DEBUG io.jhdf.ObjectHeader - Read object header from address: 2568
133 [main] DEBUG io.jhdf.GroupImpl - Loading 'old' style group
133 [main] DEBUG io.jhdf.ObjectHeader - Creating lazy object header at address: 3528
133 [main] DEBUG io.jhdf.GroupImpl - Created group '/HDFEOS/ADDITIONAL/FILE_ATTRIBUTES/'
------GroupImpl::FILE_ATTRIBUTES
133 [main] INFO io.jhdf.GroupImpl - Lazy loading children of '/HDFEOS/ADDITIONAL/FILE_ATTRIBUTES/'
133 [main] DEBUG io.jhdf.ObjectHeader - Lazy initializing object header at address: 3528
133 [main] DEBUG io.jhdf.object.message.Message - Read message: io.jhdf.object.message.ObjectHeaderContinuationMessage@2a33fae0
133 [main] DEBUG io.jhdf.object.message.Message - Read message: io.jhdf.object.message.SymbolTableMessage@707f7052
141 [main] DEBUG io.jhdf.object.message.AttributeMessage - Read attribute: OrbitNumber
141 [main] DEBUG io.jhdf.object.message.Message - Read message: AttributeMessage [name=OrbitNumber, dataType=io.jhdf.object.datatype.FixedPoint@43556938, dataSpace=io.jhdf.object.message.DataSpace@3d04a311]
141 [main] DEBUG io.jhdf.object.message.AttributeMessage - Read attribute: OrbitPeriod
141 [main] DEBUG io.jhdf.object.message.Message - Read message: AttributeMessage [name=OrbitPeriod, dataType=io.jhdf.object.datatype.FloatingPoint@7a46a697, dataSpace=io.jhdf.object.message.DataSpace@5f205aa]
143 [main] DEBUG io.jhdf.object.message.AttributeMessage - Read attribute: InstrumentName
143 [main] DEBUG io.jhdf.object.message.Message - Read message: AttributeMessage [name=InstrumentName, dataType=StringData{paddingType=NULL_TERMINATED, charset=US-ASCII}, dataSpace=io.jhdf.object.message.DataSpace@47089e5f]
143 [main] DEBUG io.jhdf.object.message.AttributeMessage - Read attribute: ProcessLevel
143 [main] DEBUG io.jhdf.object.message.Message - Read message: AttributeMessage [name=ProcessLevel, dataType=StringData{paddingType=NULL_TERMINATED, charset=US-ASCII}, dataSpace=io.jhdf.object.message.DataSpace@4141d797]
143 [main] DEBUG io.jhdf.object.message.AttributeMessage - Read attribute: GranuleMonth
143 [main] DEBUG io.jhdf.object.message.Message - Read message: AttributeMessage [name=GranuleMonth, dataType=io.jhdf.object.datatype.FixedPoint@68f7aae2, dataSpace=io.jhdf.object.message.DataSpace@4f47d241]
143 [main] DEBUG io.jhdf.object.message.AttributeMessage - Read attribute: GranuleDay
143 [main] DEBUG io.jhdf.object.message.Message - Read message: AttributeMessage [name=GranuleDay, dataType=io.jhdf.object.datatype.FixedPoint@4c3e4790, dataSpace=io.jhdf.object.message.DataSpace@38cccef]
143 [main] DEBUG io.jhdf.object.message.AttributeMessage - Read attribute: GranuleYear
143 [main] DEBUG io.jhdf.object.message.Message - Read message: AttributeMessage [name=GranuleYear, dataType=io.jhdf.object.datatype.FixedPoint@5679c6c6, dataSpace=io.jhdf.object.message.DataSpace@27ddd392]
144 [main] DEBUG io.jhdf.object.message.AttributeMessage - Read attribute: GranuleDayOfYear
144 [main] DEBUG io.jhdf.object.message.Message - Read message: AttributeMessage [name=GranuleDayOfYear, dataType=io.jhdf.object.datatype.FixedPoint@19e1023e, dataSpace=io.jhdf.object.message.DataSpace@7cef4e59]
144 [main] DEBUG io.jhdf.object.message.AttributeMessage - Read attribute: TAI93At0zOfGranule
144 [main] DEBUG io.jhdf.object.message.Message - Read message: AttributeMessage [name=TAI93At0zOfGranule, dataType=io.jhdf.object.datatype.FloatingPoint@64b8f8f4, dataSpace=io.jhdf.object.message.DataSpace@2db0f6b2]
144 [main] DEBUG io.jhdf.object.message.AttributeMessage - Read attribute: PGEVersion
144 [main] DEBUG io.jhdf.object.message.Message - Read message: AttributeMessage [name=PGEVersion, dataType=StringData{paddingType=NULL_TERMINATED, charset=US-ASCII}, dataSpace=io.jhdf.object.message.DataSpace@3cd1f1c8]
144 [main] DEBUG io.jhdf.object.message.AttributeMessage - Read attribute: StartUTC
144 [main] DEBUG io.jhdf.object.message.Message - Read message: AttributeMessage [name=StartUTC, dataType=StringData{paddingType=NULL_TERMINATED, charset=US-ASCII}, dataSpace=io.jhdf.object.message.DataSpace@3a4afd8d]
144 [main] DEBUG io.jhdf.object.message.AttributeMessage - Read attribute: EndUTC
144 [main] DEBUG io.jhdf.object.message.Message - Read message: AttributeMessage [name=EndUTC, dataType=StringData{paddingType=NULL_TERMINATED, charset=US-ASCII}, dataSpace=io.jhdf.object.message.DataSpace@1996cd68]
145 [main] DEBUG io.jhdf.object.message.AttributeMessage - Read attribute: Period
145 [main] DEBUG io.jhdf.object.message.Message - Read message: AttributeMessage [name=Period, dataType=StringData{paddingType=NULL_TERMINATED, charset=US-ASCII}, dataSpace=io.jhdf.object.message.DataSpace@3339ad8e]
145 [main] DEBUG io.jhdf.object.message.Message - Read message: io.jhdf.object.message.NilMessage@555590
145 [main] DEBUG io.jhdf.ObjectHeader - Read object header from address: 3544
145 [main] DEBUG io.jhdf.GroupImpl - Loading 'old' style group
----GroupImpl::GRIDS
145 [main] INFO io.jhdf.GroupImpl - Lazy loading children of '/HDFEOS/GRIDS/'
145 [main] DEBUG io.jhdf.ObjectHeader - Lazy initializing object header at address: 5752
145 [main] DEBUG io.jhdf.object.message.Message - Read message: io.jhdf.object.message.SymbolTableMessage@6d1e7682
145 [main] DEBUG io.jhdf.object.message.Message - Read message: io.jhdf.object.message.NilMessage@424c0bc4
145 [main] DEBUG io.jhdf.ObjectHeader - Read object header from address: 5768
146 [main] DEBUG io.jhdf.GroupImpl - Loading 'old' style group
146 [main] DEBUG io.jhdf.ObjectHeader - Creating lazy object header at address: 5856
146 [main] DEBUG io.jhdf.GroupImpl - Created group '/HDFEOS/GRIDS/OMI Column Amount O3/'
------GroupImpl::OMI Column Amount O3
146 [main] INFO io.jhdf.GroupImpl - Lazy loading children of '/HDFEOS/GRIDS/OMI Column Amount O3/'
146 [main] DEBUG io.jhdf.ObjectHeader - Lazy initializing object header at address: 5856
146 [main] DEBUG io.jhdf.object.message.Message - Read message: io.jhdf.object.message.ObjectHeaderContinuationMessage@3c679bde
146 [main] DEBUG io.jhdf.object.message.Message - Read message: io.jhdf.object.message.SymbolTableMessage@16b4a017
146 [main] DEBUG io.jhdf.object.message.AttributeMessage - Read attribute: GCTPProjectionCode
146 [main] DEBUG io.jhdf.object.message.Message - Read message: AttributeMessage [name=GCTPProjectionCode, dataType=io.jhdf.object.datatype.FixedPoint@8807e25, dataSpace=io.jhdf.object.message.DataSpace@2a3046da]
147 [main] DEBUG io.jhdf.object.message.AttributeMessage - Read attribute: Projection
147 [main] DEBUG io.jhdf.object.message.Message - Read message: AttributeMessage [name=Projection, dataType=StringData{paddingType=NULL_TERMINATED, charset=US-ASCII}, dataSpace=io.jhdf.object.message.DataSpace@2a098129]
147 [main] DEBUG io.jhdf.object.message.AttributeMessage - Read attribute: GridOrigin
147 [main] DEBUG io.jhdf.object.message.Message - Read message: AttributeMessage [name=GridOrigin, dataType=StringData{paddingType=NULL_TERMINATED, charset=US-ASCII}, dataSpace=io.jhdf.object.message.DataSpace@198e2867]
147 [main] DEBUG io.jhdf.object.message.AttributeMessage - Read attribute: GridSpacing
147 [main] DEBUG io.jhdf.object.message.Message - Read message: AttributeMessage [name=GridSpacing, dataType=StringData{paddingType=NULL_TERMINATED, charset=US-ASCII}, dataSpace=io.jhdf.object.message.DataSpace@12f40c25]
147 [main] DEBUG io.jhdf.object.message.AttributeMessage - Read attribute: GridSpacingUnit
147 [main] DEBUG io.jhdf.object.message.Message - Read message: AttributeMessage [name=GridSpacingUnit, dataType=StringData{paddingType=NULL_TERMINATED, charset=US-ASCII}, dataSpace=io.jhdf.object.message.DataSpace@3ada9e37]
147 [main] DEBUG io.jhdf.object.message.AttributeMessage - Read attribute: GridSpan
147 [main] DEBUG io.jhdf.object.message.Message - Read message: AttributeMessage [name=GridSpan, dataType=StringData{paddingType=NULL_TERMINATED, charset=US-ASCII}, dataSpace=io.jhdf.object.message.DataSpace@5cbc508c]
148 [main] DEBUG io.jhdf.object.message.AttributeMessage - Read attribute: GridSpanUnit
148 [main] DEBUG io.jhdf.object.message.Message - Read message: AttributeMessage [name=GridSpanUnit, dataType=StringData{paddingType=NULL_TERMINATED, charset=US-ASCII}, dataSpace=io.jhdf.object.message.DataSpace@3419866c]
148 [main] DEBUG io.jhdf.object.message.AttributeMessage - Read attribute: NumberOfLongitudesInGrid
148 [main] DEBUG io.jhdf.object.message.Message - Read message: AttributeMessage [name=NumberOfLongitudesInGrid, dataType=io.jhdf.object.datatype.FixedPoint@63e31ee, dataSpace=io.jhdf.object.message.DataSpace@68fb2c38]
148 [main] DEBUG io.jhdf.object.message.AttributeMessage - Read attribute: NumberOfLatitudesInGrid
148 [main] DEBUG io.jhdf.object.message.Message - Read message: AttributeMessage [name=NumberOfLatitudesInGrid, dataType=io.jhdf.object.datatype.FixedPoint@567d299b, dataSpace=io.jhdf.object.message.DataSpace@2eafffde]
148 [main] DEBUG io.jhdf.object.message.Message - Read message: io.jhdf.object.message.NilMessage@59690aa4
148 [main] DEBUG io.jhdf.ObjectHeader - Read object header from address: 5872
148 [main] DEBUG io.jhdf.GroupImpl - Loading 'old' style group
148 [main] DEBUG io.jhdf.ObjectHeader - Creating lazy object header at address: 5960
148 [main] DEBUG io.jhdf.GroupImpl - Created group '/HDFEOS/GRIDS/OMI Column Amount O3/Data Fields/'
--------GroupImpl::Data Fields
148 [main] INFO io.jhdf.GroupImpl - Lazy loading children of '/HDFEOS/GRIDS/OMI Column Amount O3/Data Fields/'
148 [main] DEBUG io.jhdf.ObjectHeader - Lazy initializing object header at address: 5960
149 [main] DEBUG io.jhdf.object.message.Message - Read message: io.jhdf.object.message.SymbolTableMessage@6842775d
149 [main] DEBUG io.jhdf.object.message.Message - Read message: io.jhdf.object.message.NilMessage@574caa3f
149 [main] DEBUG io.jhdf.ObjectHeader - Read object header from address: 5976
149 [main] DEBUG io.jhdf.GroupImpl - Loading 'old' style group
149 [main] DEBUG io.jhdf.object.message.Message - Read message: io.jhdf.object.message.FillValueMessage@64cee07
149 [main] WARN io.jhdf.object.message.Message - After reading message (FillValueMessage) buffer still has 12 bytes remaining
149 [main] DEBUG io.jhdf.object.message.Message - Read message: io.jhdf.object.message.FillValueOldMessage@1761e840
149 [main] DEBUG io.jhdf.object.message.Message - Read message: io.jhdf.object.message.DataTypeMessage@6c629d6e
149 [main] DEBUG io.jhdf.object.message.Message - Read message: io.jhdf.object.message.DataSpaceMessage@5ecddf8f
150 [main] DEBUG io.jhdf.object.message.Message - Read message: io.jhdf.object.message.FilterPipelineMessage@5f5a92bb
Exception in thread "main" io.jhdf.exceptions.HdfException: Failed to load children for group '/HDFEOS/GRIDS/OMI Column Amount O3/Data Fields/' at address '5960'
at io.jhdf.GroupImpl.getChildren(GroupImpl.java:243)
at io.jhdf.GroupImpl.iterator(GroupImpl.java:264)
at com.alexnuts.nasa.ozon.RunKt.logDepth(Run.kt:332)
at com.alexnuts.nasa.ozon.RunKt.logDepth$default(Run.kt:265)
at com.alexnuts.nasa.ozon.RunKt.logDepth(Run.kt:283)
at com.alexnuts.nasa.ozon.RunKt.logDepth$default(Run.kt:265)
at com.alexnuts.nasa.ozon.RunKt.logDepth(Run.kt:283)
at com.alexnuts.nasa.ozon.RunKt.logDepth$default(Run.kt:265)
at com.alexnuts.nasa.ozon.RunKt.logDepth(Run.kt:283)
at com.alexnuts.nasa.ozon.RunKt.logDepth$default(Run.kt:265)
at com.alexnuts.nasa.ozon.RunKt.logDepth(Run.kt:283)
at com.alexnuts.nasa.ozon.RunKt.logDepth$default(Run.kt:265)
at com.alexnuts.nasa.ozon.Run.main(Run.kt:33)
Caused by: io.jhdf.exceptions.HdfException: Failed to read '/HDFEOS/GRIDS/OMI Column Amount O3/Data Fields/ColumnAmountO3'
at io.jhdf.GroupImpl$ChildrenLazyInitializer.createOldStyleGroup(GroupImpl.java:136)
at io.jhdf.GroupImpl$ChildrenLazyInitializer.initialize(GroupImpl.java:58)
at io.jhdf.GroupImpl$ChildrenLazyInitializer.initialize(GroupImpl.java:43)
at org.apache.commons.lang3.concurrent.LazyInitializer.get(LazyInitializer.java:106)
at io.jhdf.GroupImpl.getChildren(GroupImpl.java:240)
... 12 more
Caused by: io.jhdf.exceptions.HdfException: Failed to read object header at address: 43392
at io.jhdf.ObjectHeader$ObjectHeaderV1.<init>(ObjectHeader.java:116)
at io.jhdf.ObjectHeader$ObjectHeaderV1.<init>(ObjectHeader.java:76)
at io.jhdf.ObjectHeader.readObjectHeader(ObjectHeader.java:339)
at io.jhdf.GroupImpl$ChildrenLazyInitializer.createOldStyleGroup(GroupImpl.java:133)
... 16 more
Caused by: io.jhdf.exceptions.UnsupportedHdfException: Only v3 and v4 data layout messages are supported. Detected version = 1
at io.jhdf.object.message.DataLayoutMessage.createDataLayoutMessage(DataLayoutMessage.java:32)
at io.jhdf.object.message.Message.readMessage(Message.java:107)
at io.jhdf.object.message.Message.readObjectHeaderV1Message(Message.java:54)
at io.jhdf.ObjectHeader$ObjectHeaderV1.readMessages(ObjectHeader.java:122)
at io.jhdf.ObjectHeader$ObjectHeaderV1.<init>(ObjectHeader.java:111)
... 19 more