public static bool ChangeRenderToUVRenderer(IRasterLayer irasterLayer_0, string string_0) { bool flag; bool flag3; IRaster raster = irasterLayer_0.Raster; IRasterBand band = (raster as IRasterBandCollection).Item(0); band.HasTable(out flag); if (!flag) { return(false); } ITable attributeTable = band.AttributeTable; int pCount = attributeTable.RowCount(null); IRandomColorRamp ramp = new RandomColorRamp { Size = pCount, Seed = 100 }; ramp.CreateRamp(out flag3); IRasterUniqueValueRenderer renderer = new RasterUniqueValueRenderer(); IRasterRenderer renderer2 = renderer as IRasterRenderer; renderer2.Raster = raster; renderer2.Update(); renderer.HeadingCount = 1; renderer.set_Heading(0, "All Data Values"); renderer.set_ClassCount(0, pCount); renderer.Field = string_0; int index = attributeTable.FindField(string_0); for (int i = 0; i < pCount; i++) { object obj2 = attributeTable.GetRow(i).get_Value(index); renderer.AddValue(0, i, obj2); renderer.set_Label(0, i, obj2.ToString()); ISimpleFillSymbol symbol = new SimpleFillSymbol { Color = ramp.get_Color(i) }; renderer.set_Symbol(0, i, symbol as ISymbol); } renderer2.Update(); irasterLayer_0.Renderer = renderer as IRasterRenderer; return(true); }
private void UniqueValueRender(ILayer pLayerR) { //Get raster input from layer IRasterLayer pRLayer = (IRasterLayer)pLayerR; IRaster pRaster = pRLayer.Raster; //Get the number of rows from raster table ITable pTable; IRasterBand pBand; IRasterBandCollection pBandCol; pBandCol = (IRasterBandCollection)pRaster; pBand = pBandCol.Item(0); bool TableExist; pBand.HasTable(out TableExist); if (TableExist == false) { return; } pTable = pBand.AttributeTable; int NumOfValues; NumOfValues = pTable.RowCount(null); //Specified a field and get the field index for the specified field to be rendered. int FieldIndex; string FieldName; //Value is the default field, you can specify other field here FieldName = "Value"; FieldIndex = pTable.FindField(FieldName); IColorRamp MyColorRamp = UniqueValueRandomColorRamp(NumOfValues, 100); ISimpleFillSymbol pFSymbol; //Create UniqueValue renderer and QI RasterRenderer IRasterUniqueValueRenderer pUVRen = new RasterUniqueValueRenderer(); IRasterRenderer pRasRen; pRasRen = (IRasterRenderer)pUVRen; //Connect the renderer and the raster pRasRen.Raster = pRaster; pRasRen.Update(); //Set UniqueValue renerer pUVRen.HeadingCount = 1; //' Use one heading pUVRen.set_Heading(0, "All Data Values"); pUVRen.set_ClassCount(0, NumOfValues); pUVRen.Field = FieldName; int i; IRow pRow; object LabelValue; for (i = 0; i < NumOfValues; i++) { //Get a row from the table pRow = pTable.GetRow(i); LabelValue = pRow.get_Value(FieldIndex); pUVRen.AddValue(0, i, LabelValue);//Get a row from the table pUVRen.set_Label(0, i, Convert.ToString(LabelValue)); pFSymbol = new SimpleFillSymbol(); pFSymbol.Color = MyColorRamp.get_Color(i); pUVRen.set_Symbol(0, i, (ISymbol)pFSymbol); } //Update render and refresh layer pRasRen.Update(); pRLayer.Renderer = (IRasterRenderer)pUVRen; }