This document is archived and information here might be outdated.  Recommended version.

How to create a raster unique value renderer (ArcObjects .NET 10.8 SDK)
ArcObjects Help for .NET developers > ArcObjects Help for .NET developers > Developing with ArcGIS > Learning ArcObjects > Interacting with and configuring maps, layers, and graphics > Displaying raster data > How to create a raster unique value renderer

How to create a raster unique value renderer

Creating a raster unique value renderer

Do the following steps to create a raster unique value renderer:
  1. Get the raster attribute table and table size.
  2. Create colors for each unique value.
  3. Create a unique value renderer.
  4. Set the renderer properties.

    See the following code example:
public IRasterRenderer UnqueValueRenderer(ESRI.ArcGIS.Geodatabase.IRasterDataset
        //Get the raster attribute table and the size of the table.
        IRaster2 raster=(IRaster2)rasterDataset.CreateDefaultRaster();
        ITable rasterTable=raster.AttributeTable;
        if (rasterTable == null)
            return null;
        int tableRows=rasterTable.RowCount(null);
        //Create colors for each unique value.
        IRandomColorRamp colorRamp=new RandomColorRampClass();
        bool createColorRamp;
        colorRamp.CreateRamp(out createColorRamp);
        if (createColorRamp == false)
            return null;
        //Create a unique value renderer.
        IRasterUniqueValueRenderer uvRenderer=new RasterUniqueValueRendererClass();
        IRasterRenderer rasterRenderer=(IRasterRenderer)uvRenderer;
        //Set the renderer properties.
        uvRenderer.set_Heading(0, "All Data Value");
        uvRenderer.set_ClassCount(0, tableRows);
        uvRenderer.Field="Value"; //Or any other field in the table.
        IRow row;
        ISimpleFillSymbol fillSymbol;
        for (int i=0; i < tableRows; i++)
            uvRenderer.AddValue(0, i, Convert.ToByte(row.get_Value(1))); 
                // Assuming the raster is 8-bit.
            uvRenderer.set_Label(0, i, Convert.ToString(row.get_Value(1)));
            fillSymbol=new SimpleFillSymbolClass();
            uvRenderer.set_Symbol(0, i, (ISymbol)fillSymbol);
        return rasterRenderer;
    catch (Exception ex)
        return null;
Public Function UnqueValueRenderer(ByVal rasterDataset As ESRI.ArcGIS.GeodataMyBase.IRasterDataset) As IRasterRenderer
    'Get the raster attribute table and the size of the table.
    Dim raster As IRaster2=CType(rasterDataset.CreateDefaultRaster(), IRaster2)
    Dim rasterTable As ITable=raster.AttributeTable
    If rasterTable Is Nothing Then
        Return Nothing
    End If
    Dim tableRows As Integer=rasterTable.RowCount(Nothing)
    'Create colors for each unique value.
    Dim colorRamp As IRandomColorRamp=New RandomColorRampClass()
    Dim createColorRamp As Boolean
    colorRamp.CreateRamp( createColorRamp)
    If createColorRamp=False Then
        Return Nothing
    End If
    'Create a unique value renderer.
    Dim uvRenderer As IRasterUniqueValueRenderer=New RasterUniqueValueRendererClass()
    Dim rasterRenderer As IRasterRenderer=CType(uvRenderer, IRasterRenderer)
    'Set the renderer properties.
    uvRenderer.set_Heading(0, "All Data Value")
    uvRenderer.set_ClassCount(0, tableRows)
    uvRenderer.Field="Value" 'Or any other field in the table.
    Dim row As IRow
    Dim fillSymbol As ISimpleFillSymbol
    Dim i As Integer
    For i=0 To tableRows - 1 Step i + 1
        Dim ' Assuming the raster is 8-bit As uvRenderer.AddValue(0,i,Convert.ToByte(row.get_Value(1))).
        uvRenderer.set_Label(0, i, Convert.ToString(row.get_Value(1)))
        fillSymbol=New SimpleFillSymbolClass()
        uvRenderer.set_Symbol(0, i, CType(fillSymbol, ISymbol))
    Return rasterRenderer
    Catch ex As Exception
    Return Nothing
    End Try
End Function


See Also:

How to create a raster layer

To use the code in this topic, reference the following assemblies in your Visual Studio project. In the code files, you will need using (C#) or Imports (VB .NET) directives for the corresponding namespaces (given in parenthesis below if different from the assembly name):
Development licensing Deployment licensing
ArcGIS Desktop Standard ArcGIS Desktop Advanced
ArcGIS Desktop Standard ArcGIS Desktop Standard
ArcGIS Desktop Basic ArcGIS Desktop Basic
Engine Developer Kit Engine