ArcObjects Library Reference  

GetSetKeyProperty

About the Get and set key properties on a mosaic dataset Sample

[C#]

GetSetKeyProperty.cs

using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ESRI.ArcGIS;
using ESRI.ArcGIS.DataSourcesGDB;
using ESRI.ArcGIS.DataSourcesRaster;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.Geometry;

/*
    This sample opens a Mosaic Dataset and goes through each row in the attribute table.
    It checks whether the dataset in the row has any band information (band properties) 
    associated with it. 
    If the item has no band information, it inserts band properties for the first 3 bands 
    in the item (if the item has 3 or more bands).
    Finally the mosaic dataset product definition is changed to Natural Color RGB so that 
    ArcGIS can use the band names of the mosaic dataset.
    The sample also shows how to set a key property on the mosaic dataset.

    The sample has functions to get/set any key property for a dataset.
    The sample has functions to get/set any band property for a dataset.
    The sample has functions to get all the properties and all the band properties 
    for a dataset.

    Key Properties:

    Key Properties of type 'double':
    CloudCover
    SunElevation
    SunAzimuth
    SensorElevation
    SensorAzimuth
    OffNadir
    VerticalAccuracy
    HorizontalAccuracy
    LowCellSize
    HighCellSize
    MinCellSize
    MaxCellSize

    Key Properties of type 'date':
    AcquisitionDate

    Key Properties of type 'string':
    SensorName
    ParentRasterType
    DataType
    ProductName
    DatasetTag
*/

namespace RasterSamples
{
    class GetSetKeyProperty
    {
        [STAThread]
        static void Main(string[] args)
        {
            #region Initialize
            ESRI.ArcGIS.esriSystem.AoInitialize aoInit = null;
            try
            {
                Console.WriteLine("Obtaining license");
                ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Desktop);
                aoInit = new AoInitializeClass();
                esriLicenseStatus licStatus = aoInit.Initialize(esriLicenseProductCode.esriLicenseProductCodeAdvanced);
                Console.WriteLine("Ready with license.");
            }
            catch (Exception exc)
            {
                // If it fails at this point, shutdown the test and ignore any subsequent errors.
                Console.WriteLine(exc.Message);
            }
            #endregion

            try
            {
                // Input database and Mosaic Dataset
                string MDWorkspaceFolder = @"e:\md\Samples\GetSetKP\RasterSamples.gdb";
                string MDName = @"LAC";

                // Command line setting of above input if provided.
                string[] commandLineArgs = Environment.GetCommandLineArgs();
                if (commandLineArgs.GetLength(0) > 1)
                {
                    MDWorkspaceFolder = commandLineArgs[1];
                    MDName = commandLineArgs[2];
                }

                // Open MD
                Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.FileGDBWorkspaceFactory");
                IWorkspaceFactory mdWorkspaceFactory = (IWorkspaceFactory)Activator.CreateInstance(factoryType);
                IWorkspace mdWorkspace = mdWorkspaceFactory.OpenFromFile(MDWorkspaceFolder, 0);
                IRasterWorkspaceEx workspaceEx = (IRasterWorkspaceEx)(mdWorkspace);
                IMosaicDataset mosaicDataset = (IMosaicDataset)workspaceEx.OpenRasterDataset(MDName);

                // Set Mosaic Dataset item information.
                SetMosaicDatasetItemInformation(mosaicDataset);

                // Set Key Property 'DataType' on the Mosaic Dataset to value 'Processed'
                // The change will be reflected on the 'General' page of the mosaic dataset
                // properties under the 'Source Type' property.
                SetKeyProperty((IDataset)mosaicDataset, "DataType", "Processed");

                // Set the Product Definition on the Mosaic Dataset to 'NATURAL_COLOR_RGB'
                // First set the 'BandDefinitionKeyword' key property to natural color RGB.
                SetKeyProperty((IDataset)mosaicDataset, "BandDefinitionKeyword", "NATURAL_COLOR_RGB");
                // Then set band names and wavelengths on the mosaic dataset.
                SetBandProperties((IDataset)mosaicDataset);
                // Last and most important, refresh the mosaic dataset so the changes are saved.
                ((IRasterDataset3)mosaicDataset).Refresh();

                #region Shutdown
                Console.WriteLine("Success.");
                Console.WriteLine("Press any key...");
                Console.ReadKey();

                // Shutdown License
                aoInit.Shutdown();
                #endregion
            }
            catch (Exception exc)
            {
                #region Shutdown
                Console.WriteLine("Exception Caught while creating Function Raster Dataset. " + exc.Message);
                Console.WriteLine("Failed.");
                Console.WriteLine("Press any key...");
                Console.ReadKey();

                // Shutdown License
                aoInit.Shutdown();
                #endregion
            }
        }
        
        /// <summary>
        /// Sets band information on items in a mosaic dataset
        /// </summary>
        /// <param name="md">The mosaic dataset with the items</param>
        private static void SetMosaicDatasetItemInformation(IMosaicDataset md)
        {
            // Get the Attribute table from the Mosaic Dataset.
            IFeatureClass featureClass = md.Catalog;
            ISchemaLock schemaLock = (ISchemaLock)featureClass;
            IRasterDataset3 rasDs = null;
            try
            {
                // A try block is necessary, as an exclusive lock might not be available.
                schemaLock.ChangeSchemaLock(esriSchemaLock.esriExclusiveSchemaLock);

                // Get an update cursor going through all the rows in the Moasic Dataset.
                IFeatureCursor fcCursor = featureClass.Update(null, false);
                // Alternatively, a read cursor can be used if the item does not need to be changed.
                // featureClass.Search(null, false);

                // For each row,
                IRasterCatalogItem rasCatItem = (IRasterCatalogItem)fcCursor.NextFeature();
                while (rasCatItem != null)
                {
                    // get the functionrasterdataset from the Raster field.
                    IFunctionRasterDataset funcDs = (IFunctionRasterDataset)rasCatItem.RasterDataset;
                    if (funcDs != null)
                    {
                        // Check if the 'BandName' property exists in the dataset.
                        bool propertyExists = false;
                        for (int bandID = 0; bandID < funcDs.RasterInfo.BandCount; ++bandID)
                        {
                            object bandNameProperty = null;
                            bandNameProperty = GetBandProperty((IDataset)funcDs, "BandName", bandID);
                            if (bandNameProperty != null)
                                propertyExists = true;
                        }
                        if (propertyExists == false && funcDs.RasterInfo.BandCount > 2)
                        {
                            // If the property does not exist and the dataset has atleast 3 bands,
                            // set Band Definition Properties for first 3 bands of the dataset.
                            SetBandProperties((IDataset)funcDs);
                            funcDs.AlterDefinition();
                            rasDs = (IRasterDataset3)funcDs;
                            // Refresh the dataset.
                            rasDs.Refresh();
                        }
                    }
                    fcCursor.UpdateFeature((IFeature)rasCatItem);
                    rasDs = null;
                    rasCatItem = (IRasterCatalogItem)fcCursor.NextFeature();
                }
                rasCatItem = null;
                fcCursor = null;
                featureClass = null;
            }
            catch (Exception exc) { Console.WriteLine("Exception Caught in SetMosaicDatasetItemInformation: " + exc.Message); }
            finally
            {
                // Set the lock to shared, whether or not an error occurred.
                schemaLock.ChangeSchemaLock(esriSchemaLock.esriSharedSchemaLock);
            }
        }

        /// <summary>
        /// Sets band properties on a given dataset
        /// </summary>
        /// <param name="ds">The target dataset</param>
        private static void SetBandProperties(IDataset dataset)
        {
            try
            {
                // Set properties for Band 1.
                SetBandProperty(dataset, "BandName", 0, "Red");
                SetBandProperty(dataset, "WavelengthMin", 0, 630);
                SetBandProperty(dataset, "WavelengthMax", 0, 690);

                // Set properties for Band 2.
                SetBandProperty(dataset, "BandName", 1, "Green");
                SetBandProperty(dataset, "WavelengthMin", 1, 530);
                SetBandProperty(dataset, "WavelengthMax", 1, 570);

                // Set properties for Band 3.
                SetBandProperty(dataset, "BandName", 2, "Blue");
                SetBandProperty(dataset, "WavelengthMin", 2, 440);
                SetBandProperty(dataset, "WavelengthMax", 2, 480);
            }
            catch (Exception) { }
        }

        /// <summary>
        /// Get all the properties associated with the dataset.
        /// </summary>
        /// <param name="dataset">Dataset to get the property from.</param>
        /// <param name="allKeys">String Array passed in by reference to fill with all keys.</param>
        /// <param name="allProperties">Object array passed in by reference to fill with all properties.</param>
        static void GetAllProperties(IDataset dataset, ref IStringArray allKeys, ref IVariantArray allProperties)
        {
            IRasterKeyProperties rasterKeyProps = (IRasterKeyProperties)dataset;
            rasterKeyProps.GetAllProperties(out allKeys, out allProperties);
        }

        /// <summary>
        /// Get all the properties associated with a particular band of the dataset.
        /// </summary>
        /// <param name="dataset">Dataset to get the property from.</param>
        /// <param name="bandIndex">band for which to get all properties.</param>
        /// <param name="bandKeys">String Array passed in by reference to fill with all keys.</param>
        /// <param name="bandProperties">Object array passed in by reference to fill with all properties.</param>
        static void GetAllBandProperties(IDataset dataset, int bandIndex, ref IStringArray bandKeys, ref IVariantArray bandProperties)
        {
            IRasterKeyProperties rasterKeyProps = (IRasterKeyProperties)dataset;
            rasterKeyProps.GetAllBandProperties(bandIndex, out bandKeys, out bandProperties);
        }

        /// <summary>
        /// Get the Key Property corresponding to the key 'key' from the dataset.
        /// </summary>
        /// <param name="dataset">Dataset to get the property from.</param>
        /// <param name="key">The key for which to get the value.</param>
        /// <returns>Property corresponding to the key or null if it doesnt exist.</returns>
        static object GetKeyProperty(IDataset dataset, string key)
        {
            IRasterKeyProperties rasterKeyProps = (IRasterKeyProperties)dataset;
            object value = null;
            try { value = rasterKeyProps.GetProperty(key); }
            catch (Exception) { }
            return value;
        }

        /// <summary>
        /// Set the Key Property 'value' corresponding to the key 'key' on the dataset.
        /// </summary>
        /// <param name="dataset">Dataset to set the property on.</param>
        /// <param name="key">The key on which to set the property.</param>
        /// <param name="value">The value to set.</param>
        static void SetKeyProperty(IDataset dataset, string key, object value)
        {
            IRasterKeyProperties rasterKeyProps = (IRasterKeyProperties)dataset;
            rasterKeyProps.SetProperty(key, value);
        }

        /// <summary>
        /// Get the KeyProperty corresponding to the bandIndex and 'key' from the dataset.
        /// </summary>
        /// <param name="dataset">Dataset to get the property from.</param>
        /// <param name="key">The key for which to get the value.</param>
        /// <param name="bandIndex">Band for which to get the property.</param>
        /// <returns>Property corresponding to the key or null if none found.</returns>
        static object GetBandProperty(IDataset dataset, string key, int bandIndex)
        {
            IRasterKeyProperties rasterKeyProps = (IRasterKeyProperties)dataset;
            object value = null;
            try { value = rasterKeyProps.GetBandProperty(key, bandIndex); }
            catch (Exception) { }

            return value;
        }

        /// <summary>
        /// Set the KeyProperty corresponding to the bandIndex and 'key' from the dataset.
        /// </summary>
        /// <param name="dataset">Dataset to set the property on.</param>
        /// <param name="key">The key on which to set the property.</param>
        /// <param name="bandIndex">Band from which to get the property.</param>
        /// <param name="value">The value to set.</param>
        static void SetBandProperty(IDataset dataset, string key, int bandIndex, object value)
        {
            IRasterKeyProperties rasterKeyProps = (IRasterKeyProperties)dataset;
            rasterKeyProps.SetBandProperty(key, bandIndex, value);
        }
    }
}

[Visual Basic .NET]

GetSetKeyProperty.vb

Imports System.IO
Imports System.Collections.Generic
Imports System.Linq
Imports System.Text
Imports ESRI.ArcGIS
Imports ESRI.ArcGIS.DataSourcesGDB
Imports ESRI.ArcGIS.DataSourcesRaster
Imports ESRI.ArcGIS.esriSystem
Imports ESRI.ArcGIS.Geodatabase
Imports ESRI.ArcGIS.Geometry

'
'    This sample opens a Mosaic Dataset and goes through each row in the attribute table.
'    It checks whether the dataset in the row has any band information (band properties) 
'    associated with it. 
'    If the item has no band information, it inserts band properties for the first 3 bands 
'    in the item (if the item has 3 or more bands).
'    Finally the mosaic dataset product definition is changed to Natural Color RGB so that 
'    ArcGIS can use the band names of the mosaic dataset.
'    The sample also shows how to set a key property on the mosaic dataset.
'
'    The sample has functions to get/set any key property for a dataset.
'    The sample has functions to get/set any band property for a dataset.
'    The sample has functions to get all the properties and all the band properties 
'    for a dataset.
'
'    Key Properties:
'
'    Key Properties of type 'double':
'    CloudCover
'    SunElevation
'    SunAzimuth
'    SensorElevation
'    SensorAzimuth
'    OffNadir
'    VerticalAccuracy
'    HorizontalAccuracy
'    LowCellSize
'    HighCellSize
'    MinCellSize
'    MaxCellSize
'
'    Key Properties of type 'date':
'    AcquisitionDate
'
'    Key Properties of type 'string':
'    SensorName
'    ParentRasterType
'    DataType
'    ProductName
'    DatasetTag
'


Namespace RasterSamples
	Class GetSetKeyProperty
		<STAThread> _
		Friend Shared Sub Main(args As String())
			'#Region "Initialize"
			Dim aoInit As ESRI.ArcGIS.esriSystem.AoInitialize = Nothing
			Try
				Console.WriteLine("Obtaining license")
				ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Desktop)
				aoInit = New AoInitializeClass()
				Dim licStatus As esriLicenseStatus = aoInit.Initialize(esriLicenseProductCode.esriLicenseProductCodeAdvanced)
				Console.WriteLine("Ready with license.")
			Catch exc As Exception
				' If it fails at this point, shutdown the test and ignore any subsequent errors.
				Console.WriteLine(exc.Message)
			End Try
			'#End Region

			Try
				' Input database and Mosaic Dataset
				Dim MDWorkspaceFolder As String = "e:\md\Samples\GetSetKP\RasterSamples.gdb"
				Dim MDName As String = "LAC"

				' Command line setting of above input if provided.
				Dim commandLineArgs As String() = Environment.GetCommandLineArgs()
				If commandLineArgs.GetLength(0) > 1 Then
					MDWorkspaceFolder = commandLineArgs(1)
					MDName = commandLineArgs(2)
				End If

				' Open MD
				Dim factoryType As Type = Type.GetTypeFromProgID("esriDataSourcesGDB.FileGDBWorkspaceFactory")
				Dim mdWorkspaceFactory As IWorkspaceFactory = DirectCast(Activator.CreateInstance(factoryType), IWorkspaceFactory)
				Dim mdWorkspace As IWorkspace = mdWorkspaceFactory.OpenFromFile(MDWorkspaceFolder, 0)
				Dim workspaceEx As IRasterWorkspaceEx = DirectCast(mdWorkspace, IRasterWorkspaceEx)
				Dim mosaicDataset As IMosaicDataset = DirectCast(workspaceEx.OpenRasterDataset(MDName), IMosaicDataset)

				' Set Mosaic Dataset item information.
				SetMosaicDatasetItemInformation(mosaicDataset)

				' Set Key Property 'DataType' on the Mosaic Dataset to value 'Processed'
				' The change will be reflected on the 'General' page of the mosaic dataset
				' properties under the 'Source Type' property.
				SetKeyProperty(DirectCast(mosaicDataset, IDataset), "DataType", "Processed")

				' Set the Product Definition on the Mosaic Dataset to 'NATURAL_COLOR_RGB'
				' First set the 'BandDefinitionKeyword' key property to natural color RGB.
				SetKeyProperty(DirectCast(mosaicDataset, IDataset), "BandDefinitionKeyword", "NATURAL_COLOR_RGB")
				' Then set band names and wavelengths on the mosaic dataset.
				SetBandProperties(DirectCast(mosaicDataset, IDataset))
				' Last and most important, refresh the mosaic dataset so the changes are saved.
				DirectCast(mosaicDataset, IRasterDataset3).Refresh()

				'#Region "Shutdown"
				Console.WriteLine("Success.")
				Console.WriteLine("Press any key...")
				Console.ReadKey()

				' Shutdown License
					'#End Region
				aoInit.Shutdown()
			Catch exc As Exception
				'#Region "Shutdown"
				Console.WriteLine("Exception Caught while creating Function Raster Dataset. " & exc.Message)
				Console.WriteLine("Failed.")
				Console.WriteLine("Press any key...")
				Console.ReadKey()

				' Shutdown License
					'#End Region
				aoInit.Shutdown()
			End Try
		End Sub


		''' <summary>
		''' Sets band information on items in a mosaic dataset
		''' </summary>
		''' <param name="md">The mosaic dataset with the items</param>
		Private Shared Sub SetMosaicDatasetItemInformation(md As IMosaicDataset)
			' Get the Attribute table from the Mosaic Dataset.
			Dim featureClass As IFeatureClass = md.Catalog
			Dim schemaLock As ISchemaLock = DirectCast(featureClass, ISchemaLock)
			Dim rasDs As IRasterDataset3 = Nothing
			Try
				' A try block is necessary, as an exclusive lock might not be available.
				schemaLock.ChangeSchemaLock(esriSchemaLock.esriExclusiveSchemaLock)

				' Get an update cursor going through all the rows in the Moasic Dataset.
				Dim fcCursor As IFeatureCursor = featureClass.Update(Nothing, False)
				' Alternatively, a read cursor can be used if the item does not need to be changed.
				' featureClass.Search(null, false);

				' For each row,
				Dim rasCatItem As IRasterCatalogItem = DirectCast(fcCursor.NextFeature(), IRasterCatalogItem)
				While rasCatItem IsNot Nothing
					' get the functionrasterdataset from the Raster field.
					Dim funcDs As IFunctionRasterDataset = DirectCast(rasCatItem.RasterDataset, IFunctionRasterDataset)
					If funcDs IsNot Nothing Then
						' Check if the 'BandName' property exists in the dataset.
						Dim propertyExists As Boolean = False
						For bandID As Integer = 0 To funcDs.RasterInfo.BandCount - 1
							Dim bandNameProperty As Object = Nothing
							bandNameProperty = GetBandProperty(DirectCast(funcDs, IDataset), "BandName", bandID)
							If bandNameProperty IsNot Nothing Then
								propertyExists = True
							End If
						Next
						If propertyExists = False AndAlso funcDs.RasterInfo.BandCount > 2 Then
							' If the property does not exist and the dataset has atleast 3 bands,
							' set Band Definition Properties for first 3 bands of the dataset.
							SetBandProperties(DirectCast(funcDs, IDataset))
							funcDs.AlterDefinition()
							rasDs = DirectCast(funcDs, IRasterDataset3)
							' Refresh the dataset.
							rasDs.Refresh()
						End If
					End If
					fcCursor.UpdateFeature(DirectCast(rasCatItem, IFeature))
					rasDs = Nothing
					rasCatItem = DirectCast(fcCursor.NextFeature(), IRasterCatalogItem)
				End While
				rasCatItem = Nothing
				fcCursor = Nothing
				featureClass = Nothing
			Catch exc As Exception
				Console.WriteLine("Exception Caught in SetMosaicDatasetItemInformation: " & exc.Message)
			Finally
				' Set the lock to shared, whether or not an error occurred.
				schemaLock.ChangeSchemaLock(esriSchemaLock.esriSharedSchemaLock)
			End Try
		End Sub

		''' <summary>
		''' Sets band properties on a given dataset
		''' </summary>
		''' <param name="ds">The target dataset</param>
		Private Shared Sub SetBandProperties(dataset As IDataset)
			Try
				' Set properties for Band 1.
				SetBandProperty(dataset, "BandName", 0, "Red")
				SetBandProperty(dataset, "WavelengthMin", 0, 630)
				SetBandProperty(dataset, "WavelengthMax", 0, 690)

				' Set properties for Band 2.
				SetBandProperty(dataset, "BandName", 1, "Green")
				SetBandProperty(dataset, "WavelengthMin", 1, 530)
				SetBandProperty(dataset, "WavelengthMax", 1, 570)

				' Set properties for Band 3.
				SetBandProperty(dataset, "BandName", 2, "Blue")
				SetBandProperty(dataset, "WavelengthMin", 2, 440)
				SetBandProperty(dataset, "WavelengthMax", 2, 480)
			Catch generatedExceptionName As Exception
			End Try
		End Sub

		''' <summary>
		''' Get all the properties associated with the dataset.
		''' </summary>
		''' <param name="dataset">Dataset to get the property from.</param>
		''' <param name="allKeys">String Array passed in by reference to fill with all keys.</param>
		''' <param name="allProperties">Object array passed in by reference to fill with all properties.</param>
		Private Shared Sub GetAllProperties(dataset As IDataset, ByRef allKeys As IStringArray, ByRef allProperties As IVariantArray)
			Dim rasterKeyProps As IRasterKeyProperties = DirectCast(dataset, IRasterKeyProperties)
			rasterKeyProps.GetAllProperties(allKeys, allProperties)
		End Sub

		''' <summary>
		''' Get all the properties associated with a particular band of the dataset.
		''' </summary>
		''' <param name="dataset">Dataset to get the property from.</param>
		''' <param name="bandIndex">band for which to get all properties.</param>
		''' <param name="bandKeys">String Array passed in by reference to fill with all keys.</param>
		''' <param name="bandProperties">Object array passed in by reference to fill with all properties.</param>
		Private Shared Sub GetAllBandProperties(dataset As IDataset, bandIndex As Integer, ByRef bandKeys As IStringArray, ByRef bandProperties As IVariantArray)
			Dim rasterKeyProps As IRasterKeyProperties = DirectCast(dataset, IRasterKeyProperties)
			rasterKeyProps.GetAllBandProperties(bandIndex, bandKeys, bandProperties)
		End Sub

		''' <summary>
		''' Get the Key Property corresponding to the key 'key' from the dataset.
		''' </summary>
		''' <param name="dataset">Dataset to get the property from.</param>
		''' <param name="key">The key for which to get the value.</param>
		''' <returns>Property corresponding to the key or null if it doesnt exist.</returns>
		Private Shared Function GetKeyProperty(dataset As IDataset, key As String) As Object
			Dim rasterKeyProps As IRasterKeyProperties = DirectCast(dataset, IRasterKeyProperties)
			Dim value As Object = Nothing
			Try
				value = rasterKeyProps.GetProperty(key)
			Catch generatedExceptionName As Exception
			End Try
			Return value
		End Function

		''' <summary>
		''' Set the Key Property 'value' corresponding to the key 'key' on the dataset.
		''' </summary>
		''' <param name="dataset">Dataset to set the property on.</param>
		''' <param name="key">The key on which to set the property.</param>
		''' <param name="value">The value to set.</param>
		Private Shared Sub SetKeyProperty(dataset As IDataset, key As String, value As Object)
			Dim rasterKeyProps As IRasterKeyProperties = DirectCast(dataset, IRasterKeyProperties)
			rasterKeyProps.SetProperty(key, value)
		End Sub

		''' <summary>
		''' Get the KeyProperty corresponding to the bandIndex and 'key' from the dataset.
		''' </summary>
		''' <param name="dataset">Dataset to get the property from.</param>
		''' <param name="key">The key for which to get the value.</param>
		''' <param name="bandIndex">Band for which to get the property.</param>
		''' <returns>Property corresponding to the key or null if none found.</returns>
		Private Shared Function GetBandProperty(dataset As IDataset, key As String, bandIndex As Integer) As Object
			Dim rasterKeyProps As IRasterKeyProperties = DirectCast(dataset, IRasterKeyProperties)
			Dim value As Object = Nothing
			Try
				value = rasterKeyProps.GetBandProperty(key, bandIndex)
			Catch generatedExceptionName As Exception
			End Try

			Return value
		End Function

		''' <summary>
		''' Set the KeyProperty corresponding to the bandIndex and 'key' from the dataset.
		''' </summary>
		''' <param name="dataset">Dataset to set the property on.</param>
		''' <param name="key">The key on which to set the property.</param>
		''' <param name="bandIndex">Band from which to get the property.</param>
		''' <param name="value">The value to set.</param>
		Private Shared Sub SetBandProperty(dataset As IDataset, key As String, bandIndex As Integer, value As Object)
			Dim rasterKeyProps As IRasterKeyProperties = DirectCast(dataset, IRasterKeyProperties)
			rasterKeyProps.SetBandProperty(key, bandIndex, value)
		End Sub
	End Class
End Namespace