I am using xarray (version 0.12.2) to work with the MODIS/Terra+Aqua MAIAC Land Aerosol Optical Depth dataset (MCD19A2.006). xarray successfully opens that dataset with the correct variables and dimensions but the dataset has projection metadata that is currently not being read. Has anyone else encountered this problem or have solutions to parsing the metadata to construct the correct coordinates?
Here is an example:
import xarray as xr
ds = xr.open_dataset('MCD19A2.A2000057.h09v07.006.2018013034454.hdf')
print(ds)
Which outputs the following dataset information:
<xarray.Dataset>
Dimensions: (Orbits:grid1km: 1, Orbits:grid5km: 1, XDim:grid1km: 1200, XDim:grid5km: 240, YDim:grid1km: 1200, YDim:grid5km: 240)
Dimensions without coordinates: Orbits:grid1km, Orbits:grid5km, XDim:grid1km, XDim:grid5km, YDim:grid1km, YDim:grid5km
Data variables:
Optical_Depth_047 (Orbits:grid1km, YDim:grid1km, XDim:grid1km) float32 ...
Optical_Depth_055 (Orbits:grid1km, YDim:grid1km, XDim:grid1km) float32 ...
AOD_Uncertainty (Orbits:grid1km, YDim:grid1km, XDim:grid1km) float32 ...
FineModeFraction (Orbits:grid1km, YDim:grid1km, XDim:grid1km) float32 ...
Column_WV (Orbits:grid1km, YDim:grid1km, XDim:grid1km) float32 ...
AOD_QA (Orbits:grid1km, YDim:grid1km, XDim:grid1km) float32 ...
AOD_MODEL (Orbits:grid1km, YDim:grid1km, XDim:grid1km) float32 ...
Injection_Height (Orbits:grid1km, YDim:grid1km, XDim:grid1km) float32 ...
cosSZA (Orbits:grid5km, YDim:grid5km, XDim:grid5km) float32 ...
cosVZA (Orbits:grid5km, YDim:grid5km, XDim:grid5km) float32 ...
RelAZ (Orbits:grid5km, YDim:grid5km, XDim:grid5km) float32 ...
Scattering_Angle (Orbits:grid5km, YDim:grid5km, XDim:grid5km) float32 ...
Glint_Angle (Orbits:grid5km, YDim:grid5km, XDim:grid5km) float32 ...
Attributes:
HDFEOSVersion: HDFEOS_V2.19
StructMetadata.0: GROUP=SwathStructure\nEND_GROUP=SwathS...
Orbit_amount: 1
Orbit_time_stamp: 20000571645T
CoreMetadata.0: \nGROUP = INVENTORYME...
ArchiveMetadata.0: \nGROUP = ARCHIVEDMET...
identifier_product_doi: 10.5067/MODIS/MCD19A2.006
identifier_product_doi_authority: http://dx.doi.org
You can see that there are no coordinates associated with dataset but in reality it does have geographic coordinates, it is just buried deep in metadata and needs to be extracted. My next step is to read the projection information from the StructMetadata.0
attribute and construct the coordinates from there. But I wonder if I am missing something with xarray or if someone else has code to where it would extract the geographic information automatically.