コード例 #1
0
ファイル: RasterUtility.cs プロジェクト: secondii/Yutai
        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);
        }
コード例 #2
0
        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;
        }