Skip to content

Parse ArchiveMetadata.0 field #57

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
mankoff opened this issue Jul 13, 2022 · 0 comments
Open

Parse ArchiveMetadata.0 field #57

mankoff opened this issue Jul 13, 2022 · 0 comments

Comments

@mankoff
Copy link

mankoff commented Jul 13, 2022

What version of pyhdf, HDF4, and Python are you using?

pyhdf version: 0.10.5
HDF4 C library version:
Python version: 3.10.5

OS: Linux.

I'm not sure if ArchiveMetadata.0 is a hdf standard, or other similar metadata is common. However, in the hdf files I have, this field exists and is accessible as only a string. It looks like the text below. It would be nice if pyhdf could parse and return this as a dictionary. This has been implemented here: https://github.com/SpatioTemporal/STAREMaster_py/blob/af5cba54b55194fefae1448b5a6de1279b05fd22/staremaster/products/hdfeos.py

Hidden Text

``` GROUP = ARCHIVEDMETADATA GROUPTYPE = MASTERGROUP

GROUP = BOUNDINGRECTANGLE

OBJECT                 = NORTHBOUNDINGCOORDINATE
  NUM_VAL              = 1
  VALUE                = 39.9999999964079
END_OBJECT             = NORTHBOUNDINGCOORDINATE

OBJECT                 = SOUTHBOUNDINGCOORDINATE
  NUM_VAL              = 1
  VALUE                = 29.9999999973059
END_OBJECT             = SOUTHBOUNDINGCOORDINATE

OBJECT                 = EASTBOUNDINGCOORDINATE
  NUM_VAL              = 1
  VALUE                = -92.3664205550513
END_OBJECT             = EASTBOUNDINGCOORDINATE

OBJECT                 = WESTBOUNDINGCOORDINATE
  NUM_VAL              = 1
  VALUE                = -117.486656023174
END_OBJECT             = WESTBOUNDINGCOORDINATE

END_GROUP = BOUNDINGRECTANGLE

OBJECT = GEOANYABNORMAL
NUM_VAL = 1
VALUE = "False"
END_OBJECT = GEOANYABNORMAL

OBJECT = GEOESTMAXRMSERROR
NUM_VAL = 1
VALUE = 50.0
END_OBJECT = GEOESTMAXRMSERROR

OBJECT = LONGNAME
NUM_VAL = 1
VALUE = "MODIS/Terra Surface Reflectance Daily L2G Global 1km and 500m SIN Grid"
END_OBJECT = LONGNAME

OBJECT = SPSOPARAMETERS
NUM_VAL = 1
VALUE = "2015"
END_OBJECT = SPSOPARAMETERS

OBJECT = PROCESSINGCENTER
NUM_VAL = 1
VALUE = "MODAPS"
END_OBJECT = PROCESSINGCENTER

OBJECT = NUMBEROFGRANULES
NUM_VAL = 1
VALUE = 1
END_OBJECT = NUMBEROFGRANULES

OBJECT = NUMBEROFORBITS
NUM_VAL = 1
VALUE = 3
END_OBJECT = NUMBEROFORBITS

OBJECT = GRANULEBEGINNINGDATETIME
NUM_VAL = 32
VALUE = ("2022-06-30T16:10:00.000000Z")
END_OBJECT = GRANULEBEGINNINGDATETIME

OBJECT = GRANULEENDINGDATETIME
NUM_VAL = 32
VALUE = ("2022-06-30T19:30:00.000000Z")
END_OBJECT = GRANULEENDINGDATETIME

OBJECT = GRANULEDAYNIGHTFLAG
NUM_VAL = 32
VALUE = ("Day")
END_OBJECT = GRANULEDAYNIGHTFLAG

OBJECT = GRANULEDAYOFYEAR
NUM_VAL = 32
VALUE = ("181")
END_OBJECT = GRANULEDAYOFYEAR

OBJECT = NADIRDATARESOLUTION1KM
NUM_VAL = 1
VALUE = "1km"
END_OBJECT = NADIRDATARESOLUTION1KM

OBJECT = CHARACTERISTICBINANGULARSIZE1KM
NUM_VAL = 1
VALUE = 30.0
END_OBJECT = CHARACTERISTICBINANGULARSIZE1KM

OBJECT = CHARACTERISTICBINSIZE1KM
NUM_VAL = 1
VALUE = 926.625433055556
END_OBJECT = CHARACTERISTICBINSIZE1KM

OBJECT = DATACOLUMNS1KM
NUM_VAL = 1
VALUE = 1200
END_OBJECT = DATACOLUMNS1KM

OBJECT = DATAROWS1KM
NUM_VAL = 1
VALUE = 1200
END_OBJECT = DATAROWS1KM

OBJECT = GLOBALGRIDCOLUMNS1KM
NUM_VAL = 1
VALUE = 43200
END_OBJECT = GLOBALGRIDCOLUMNS1KM

OBJECT = GLOBALGRIDROWS1KM
NUM_VAL = 1
VALUE = 21600
END_OBJECT = GLOBALGRIDROWS1KM

OBJECT = MAXIMUMOBSERVATIONS1KM
NUM_VAL = 1
VALUE = 12
END_OBJECT = MAXIMUMOBSERVATIONS1KM

OBJECT = ADDITIONALLAYERS1KM
NUM_VAL = 1
VALUE = 11
END_OBJECT = ADDITIONALLAYERS1KM

OBJECT = TOTALOBSERVATIONS1KM
NUM_VAL = 1
VALUE = 3695425
END_OBJECT = TOTALOBSERVATIONS1KM

OBJECT = TOTALADDITIONALOBSERVATIONS1KM
NUM_VAL = 1
VALUE = 2255425
END_OBJECT = TOTALADDITIONALOBSERVATIONS1KM

OBJECT = COVERAGECALCULATIONMETHOD
NUM_VAL = 1
VALUE = "volume"
END_OBJECT = COVERAGECALCULATIONMETHOD

OBJECT = FIRSTLAYERSELECTIONCRITERIA
NUM_VAL = 1
VALUE = "order of input pointer"
END_OBJECT = FIRSTLAYERSELECTIONCRITERIA

OBJECT = L2GSTORAGEFORMAT1KM
NUM_VAL = 1
VALUE = "compact"
END_OBJECT = L2GSTORAGEFORMAT1KM

OBJECT = QUALITYCLASSPERCENTAGE500MBAND3
NUM_VAL = 16
VALUE = (99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0)
END_OBJECT = QUALITYCLASSPERCENTAGE500MBAND3

OBJECT = QUALITYCLASSPERCENTAGE500MBAND4
NUM_VAL = 16
VALUE = (100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
END_OBJECT = QUALITYCLASSPERCENTAGE500MBAND4

OBJECT = QUALITYCLASSPERCENTAGE500MBAND5
NUM_VAL = 16
VALUE = (87, 0, 0, 0, 0, 0, 0, 9, 4, 0, 0, 0, 0, 0, 0, 0)
END_OBJECT = QUALITYCLASSPERCENTAGE500MBAND5

OBJECT = QUALITYCLASSPERCENTAGE500MBAND6
NUM_VAL = 16
VALUE = (100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
END_OBJECT = QUALITYCLASSPERCENTAGE500MBAND6

OBJECT = QUALITYCLASSPERCENTAGE500MBAND7
NUM_VAL = 16
VALUE = (100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
END_OBJECT = QUALITYCLASSPERCENTAGE500MBAND7

OBJECT = PROCESSINGENVIRONMENT
NUM_VAL = 1
VALUE = "Linux nrt4min108 3.10.0-1160.66.1.el7.x86_64 #1 SMP Wed May 18 16:02:34 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux"
END_OBJECT = PROCESSINGENVIRONMENT

OBJECT = DESCRREVISION
NUM_VAL = 1
VALUE = "6.1"
END_OBJECT = DESCRREVISION

OBJECT = SYSTEMFILENAME
NUM_VAL = 100
VALUE = ("MOD09GST.A2022181.h09v05.061.2022182013301.NRT.hdf", "MOD09GHK.A2022181.h09v05.061.2022182013349.NRT.hdf", "MOD09GQK.A2022181.h09v05.061.2022182013332.NRT.hdf", "MODPT1KD.A2022181.h09v05.061.2022182013234.NRT.hdf", "
MODPTHKM.A2022181.h09v05.061.2022182013234.NRT.hdf", "MODPTQKM.A2022181.h09v05.061.2022182013234.NRT.hdf", "MODMGGAD.A2022181.h09v05.061.2022182013237.NRT.hdf", "MODTBGD.A2022181.h09v05.061.2022182013353.NRT.hdf", "MODOCGD.A2022181.h09v05.061.2022182013359.NRT.hdf", "
MOD10L2G.A2022181.h09v05.061.2022182013251.NRT.hdf")
END_OBJECT = SYSTEMFILENAME

OBJECT = CHARACTERISTICBINANGULARSIZE500M
NUM_VAL = 1
VALUE = 15.0
END_OBJECT = CHARACTERISTICBINANGULARSIZE500M

OBJECT = CHARACTERISTICBINSIZE500M
NUM_VAL = 1
VALUE = 463.312716527778
END_OBJECT = CHARACTERISTICBINSIZE500M

OBJECT = DATACOLUMNS500M
NUM_VAL = 1
VALUE = 2400
END_OBJECT = DATACOLUMNS500M

OBJECT = DATAROWS500M
NUM_VAL = 1
VALUE = 2400
END_OBJECT = DATAROWS500M

OBJECT = GLOBALGRIDCOLUMNS500M
NUM_VAL = 1
VALUE = 86400
END_OBJECT = GLOBALGRIDCOLUMNS500M

OBJECT = GLOBALGRIDROWS500M
NUM_VAL = 1
VALUE = 43200
END_OBJECT = GLOBALGRIDROWS500M

OBJECT = NADIRDATARESOLUTION500M
NUM_VAL = 1
VALUE = "500m"
END_OBJECT = NADIRDATARESOLUTION500M

OBJECT = PERCENTPROCESSED
NUM_VAL = 1
VALUE = 100
END_OBJECT = PERCENTPROCESSED

OBJECT = PERCENTLAND
NUM_VAL = 1
VALUE = 96
END_OBJECT = PERCENTLAND

OBJECT = PERCENTLANDSEAMASKCLASS
NUM_VAL = 8
VALUE = (0, 96, 3, 0, 0, 0, 0, 0)
END_OBJECT = PERCENTLANDSEAMASKCLASS

OBJECT = PERCENTCLOUDY
NUM_VAL = 1
VALUE = 42
END_OBJECT = PERCENTCLOUDY

OBJECT = PERCENTSHADOW
NUM_VAL = 1
VALUE = 5
END_OBJECT = PERCENTSHADOW

OBJECT = PERCENTLOWSUN
NUM_VAL = 1
VALUE = 0
END_OBJECT = PERCENTLOWSUN

OBJECT = RANKING
NUM_VAL = 1
VALUE = "No"
END_OBJECT = RANKING

OBJECT = KEEPALL
NUM_VAL = 1
VALUE = "No"
END_OBJECT = KEEPALL

OBJECT = COVERAGEMINIMUM
NUM_VAL = 1
VALUE = 0.00999999977648258
END_OBJECT = COVERAGEMINIMUM

OBJECT = MAXOUTPUTRES
NUM_VAL = 1
VALUE = "QKM"
END_OBJECT = MAXOUTPUTRES

OBJECT = DEEPOCEANFLAG
NUM_VAL = 1
VALUE = "Yes"
END_OBJECT = DEEPOCEANFLAG

OBJECT = MAXIMUMOBSERVATIONS500M
NUM_VAL = 1
VALUE = 2
END_OBJECT = MAXIMUMOBSERVATIONS500M

OBJECT = ADDITIONALLAYERS500M
NUM_VAL = 1
VALUE = 1
END_OBJECT = ADDITIONALLAYERS500M

OBJECT = TOTALOBSERVATIONS500M
NUM_VAL = 1
VALUE = 5853755
END_OBJECT = TOTALOBSERVATIONS500M

OBJECT = TOTALADDITIONALOBSERVATIONS500M
NUM_VAL = 1
VALUE = 93770
END_OBJECT = TOTALADDITIONALOBSERVATIONS500M

OBJECT = L2GSTORAGEFORMAT500M
NUM_VAL = 1
VALUE = "compact"
END_OBJECT = L2GSTORAGEFORMAT500M

OBJECT = QUALITYCLASSPERCENTAGE500MBAND1
NUM_VAL = 16
VALUE = (100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
END_OBJECT = QUALITYCLASSPERCENTAGE500MBAND1

OBJECT = QUALITYCLASSPERCENTAGE500MBAND2
NUM_VAL = 16
VALUE = (100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
END_OBJECT = QUALITYCLASSPERCENTAGE500MBAND2

OBJECT = NUMBEROFOVERLAPGRANULES
NUM_VAL = 1
VALUE = 4
END_OBJECT = NUMBEROFOVERLAPGRANULES

OBJECT = NUMBEROFINPUTGRANULES
NUM_VAL = 1
VALUE = 5
END_OBJECT = NUMBEROFINPUTGRANULES

OBJECT = CLOUDOPTION
NUM_VAL = 1
VALUE = "MOD09 internally-derived"
END_OBJECT = CLOUDOPTION

OBJECT = GRANULENUMBERARRAY
NUM_VAL = 100
VALUE = (195, 196, 215, 216, 235, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1)
END_OBJECT = GRANULENUMBERARRAY

OBJECT = GRANULEPOINTERARRAY
NUM_VAL = 100
VALUE = (-1, 0, 1, 2, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1)
END_OBJECT = GRANULEPOINTERARRAY

OBJECT = ORBITNUMBERARRAY
NUM_VAL = 100
VALUE = (-1, 119854, 119855, 119855, 119856, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1)
END_OBJECT = ORBITNUMBERARRAY

OBJECT = GRANULEBEGINNINGDATETIMEARRAY
NUM_VAL = 100
VALUE = ("2022-06-30T16:05:00.000000Z", "2022-06-30T16:10:00.000000Z", "2022-06-30T17:45:00.000000Z", "2022-06-30T17:50:00.000000Z", "2022-06-30T19:25:00.000000Z")
END_OBJECT = GRANULEBEGINNINGDATETIMEARRAY

OBJECT = GRANULEENDINGDATETIMEARRAY
NUM_VAL = 100
VALUE = ("2022-06-30T16:10:00.000000Z", "2022-06-30T16:15:00.000000Z", "2022-06-30T17:50:00.000000Z", "2022-06-30T17:55:00.000000Z", "2022-06-30T19:30:00.000000Z")
END_OBJECT = GRANULEENDINGDATETIMEARRAY

OBJECT = GRANULEDAYNIGHTFLAGARRAY
NUM_VAL = 100
VALUE = ("Day", "Day", "Day", "Day", "Day")
END_OBJECT = GRANULEDAYNIGHTFLAGARRAY

END_GROUP = ARCHIVEDMETADATA

END

```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant