I'm trying to convert MCD12Q1 HDF5 product to GeoTiff. I extracted metadata from the file, and from this user guide I found the projection information as
PROJ4: '+proj=sinu +a=6371007.181 +b=6371007.181 +units=m'
However, when I tried to use these variables in my Python script:
from osgeo import gdal
Dataset = gdal.Open("../data/MCD12Q1/MCD12Q1.A2001001.h19v04.006.2018142205330.hdf", gdal.GA_ReadOnly)
SubDatasets = Dataset.GetSubDatasets()
SubLayers = [SubLayer for SubLayer, _ in SubDatasets]
SubLayer = gdal.Open(SubLayers[0], gdal.GA_ReadOnly)
SLName = SubLayer.GetMetadata_Dict()['long_name']
print(SLName)
WestCoord = SubLayer.GetMetadata_Dict()["WESTBOUNDINGCOORDINATE"]
NorthCoord = SubLayer.GetMetadata_Dict()["NORTHBOUNDINGCOORDINATE"]
EastCoord = SubLayer.GetMetadata_Dict()["EASTBOUNDINGCOORDINATE"]
SouthCoord = SubLayer.GetMetadata_Dict()["SOUTHBOUNDINGCOORDINATE"]
PROJ4 = "+proj=sinu +a=6371007.181 +b=6371007.181 +units=m"
Command = f"-a_srs '{PROJ4}' -a_ullr {WestCoord} {NorthCoord} {EastCoord} {SouthCoord}"
print(Command)
Options = gdal.TranslateOptions(gdal.ParseCommandLine(Command))
gdal.Translate("../data/MCD12Q1/MCD12Q1.A2001001.h19v04.006.2018142205330_.tif", SubLayer, options=Options)
>>> Land_Cover_Type_1
>>> -a_srs '+proj=sinu +a=6371007.181 +b=6371007.181 +units=m' -a_ullr 13.054073 50.0 31.127441 40.0
>>> Traceback (most recent call last):
File "D:\geo\script\hdf5_to_geotiff.py", line 21, in <module>
gdal.Translate("../data/MCD12Q1/MCD12Q1.A2001001.h19v04.006.2018142205330_.tif", SubLayer, options=Options)
File "C:\ProgramData\Miniconda3\envs\geo\lib\site-packages\osgeo\gdal.py", line 422, in Translate
return TranslateInternal(destName, srcDS, opts, callback, callback_data)
File "C:\ProgramData\Miniconda3\envs\geo\lib\site-packages\osgeo\gdal.py", line 3381, in TranslateInternal
return _gdal.TranslateInternal(args)
TypeError: in method 'TranslateInternal', argument 3 of type 'GDALTranslateOptions '
In this script, EPSG code is used but I only have PROJ4 and WKT formats. How can I use PROJ4 or WKT definitions with gdal.Translate function?

rioxarray.open_rasterioas well. – snowman2 Jun 30 '21 at 21:27