Search code examples
gdalgeotiff

How to set the "band description" option/tag of a GeoTIFF file using GDAL (gdalwarp/gdal_translate)


Does anybody know how to change or set the "Description" option/tag of a GeoTIFF file using GDAL?

To specify what I mean, this is an example of gdalinfo return from a GeoTIFF file with set "Description":

 Band 1 Block=64x64 Type=UInt16, ColorInterp=Undefined
 Description = AVHRR Channel 1:  0.58  micrometers -- 0.68 micrometers
 Min=0.000 Max=814.000 
 Minimum=0.000, Maximum=814.000, Mean=113.177, StdDev=152.897
 Metadata:
    LAYER_TYPE=athematic
    STATISTICS_MAXIMUM=814
    STATISTICS_MEAN=113.17657236931
    STATISTICS_MINIMUM=0
    STATISTICS_STDDEV=152.89720574652

In the example you can see: Description = AVHRR Channel 1: 0.58 micrometers -- 0.68 micrometers

How do I set this parameter using GDAL?


Solution

  • In Python you can set the band description like this:

    from osgeo import gdal, osr
    import numpy
    
    # Define output image name, size and projection info:
    OutputImage = 'test.tif'
    SizeX = 20
    SizeY = 20
    CellSize = 1
    X_Min = 563220.0
    Y_Max = 699110.0
    N_Bands = 10
    srs = osr.SpatialReference()
    srs.ImportFromEPSG(2157)
    srs = srs.ExportToWkt()
    GeoTransform = (X_Min, CellSize, 0, Y_Max, 0, -CellSize)
    
    # Create the output image:
    Driver = gdal.GetDriverByName('GTiff')
    Raster = Driver.Create(OutputImage, SizeX, SizeY, N_Bands, 2) # Datatype = 2 same as gdal.GDT_UInt16
    Raster.SetProjection(srs)
    Raster.SetGeoTransform(GeoTransform)
    
    # Iterate over each band
    for band in range(N_Bands):
        BandNumber = band + 1
        BandName = 'SomeBandName '+ str(BandNumber).zfill(3)
        RasterBand = Raster.GetRasterBand(BandNumber)
        RasterBand.SetNoDataValue(0)
        RasterBand.SetDescription(BandName) # This sets the band name!
        RasterBand.WriteArray(numpy.ones((SizeX, SizeY)))
    
    # close the output image
    Raster = None
    print("Done.")
    

    Unfortunately, I'm not sure if ArcGIS or QGIS are able to read the band descriptions. However, the band names are clearly visible in Tuiview: enter image description here