Esempio n. 1
0
        public IRasterRenderer CreateDefaultRasterRenderer(IRaster raster)
        {
            //Get raster dataset
            IRasterBandCollection rasterBandCollection = (IRasterBandCollection)raster;
            IRasterBand           rasterBand           = rasterBandCollection.Item(0);
            IRasterDataset        rasterDataset        = (IRasterDataset)rasterBand;

            //Check for TIFF format
            string format_Renamed = rasterDataset.Format;

            if (format_Renamed.Substring(0, 4) != "TIFF")
            {
                return(null);
            }

            //check for bit depth
            IRasterProps rasterProps = (IRasterProps)rasterBand;

            if (rasterProps.PixelType != rstPixelType.PT_U1)
            {
                return(null);
            }

            //create renderer for 1 bit raster
            //Create a unique value renderer and associate it with raster
            IRasterUniqueValueRenderer rasterUniqueValueRenderer = new RasterUniqueValueRendererClass();
            IRasterRenderer            rasterRenderer            = (IRasterRenderer)rasterUniqueValueRenderer;

            rasterRenderer.Raster = raster;
            rasterRenderer.Update();

            //Define the renderer
            rasterUniqueValueRenderer.HeadingCount = 1;
            rasterUniqueValueRenderer.set_Heading(0, "");
            rasterUniqueValueRenderer.set_ClassCount(0, 2);
            rasterUniqueValueRenderer.Field = "VALUE";
            rasterUniqueValueRenderer.AddValue(0, 0, 0);
            rasterUniqueValueRenderer.AddValue(0, 1, 1);
            rasterUniqueValueRenderer.set_Label(0, 0, "0");
            rasterUniqueValueRenderer.set_Label(0, 1, "1");

            // Define symbology for rendering value 0
            IColor color1 = (IColor)(CreateRGBColor(200, 50, 0)); //Brown color

            ISimpleFillSymbol simpleFillSymbol1 = new SimpleFillSymbolClass();

            simpleFillSymbol1.Color = color1;
            rasterUniqueValueRenderer.set_Symbol(0, 0, (ISymbol)simpleFillSymbol1);

            IColor color2 = new RgbColorClass();

            color2.NullColor = true;

            ISimpleFillSymbol simpleFillSymbol2 = new SimpleFillSymbolClass();

            simpleFillSymbol2.Color = color2;

            rasterUniqueValueRenderer.set_Symbol(0, 1, (ISymbol)simpleFillSymbol2);
            return(rasterRenderer);
        }
        // 专题图符号化(唯一值符号化 - 颜色带渐变) - 事件入口
        private void btn_symbology_Click(object sender, EventArgs e)
        {
            //IRasterRenderer pRenderer = new RasterStretchColorRampRendererClass(){
            //    BandIndex = 0,
            //    ColorRamp = GetColorRamp(GetRgbColor(0, 255, 0), GetRgbColor(255, 0, 0), 5)
            //};
            //pRenderer.Raster = (m_pLayer as IRasterLayer).Raster;
            //pRenderer.Update();

            //(m_pLayer as IRasterLayer).Renderer = pRenderer;
            //axPageLayoutControl_main.Refresh();

            IRasterUniqueValueRenderer pRenderer = new RasterUniqueValueRendererClass()
            {
                ColorRamp = GetColorRamp(GetRgbColor(0, 255, 0), GetRgbColor(255, 0, 0), 4)
            };

            (pRenderer as IRasterRenderer).Raster = (m_pLayer as IRasterLayer).Raster;
            (pRenderer as IRasterRenderer).Update();
            SetRasterRendererInfo(pRenderer, 0, 1, "非敏感");
            SetRasterRendererInfo(pRenderer, 1, 2, "低敏感");
            SetRasterRendererInfo(pRenderer, 2, 3, "中敏感");
            SetRasterRendererInfo(pRenderer, 3, 4, "高敏感");
            (m_pLayer as IRasterLayer).Renderer = pRenderer as IRasterRenderer;
            axPageLayoutControl_main.Refresh();
        }
Esempio n. 3
0
        /// <summary>
        /// Asigna la simbologia establecida a la capa de probabilidades
        /// </summary>
        /// <param name="pRLayer">Objeto RasterLayer a Simbolizar</param>
        private void AsignarSimbologiaProbabilidad(IRasterLayer pRLayer)
        {
            IRasterUniqueValueRenderer pRUVRenderer = new RasterUniqueValueRendererClass();
            IRasterRenderer            pRRenderer   = pRUVRenderer as IRasterRenderer;
            string sLayerName = pRLayer.Name;
            int    iNumDias   = 0;

            try
            {
                iNumDias = System.Convert.ToInt32(sLayerName.Substring(sLayerName.Length - 1, 1));
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            IRgbColor pColor = new RgbColorClass();

            pRRenderer.Raster         = pRLayer.Raster;
            pRRenderer.ResamplingType = rstResamplingTypes.RSP_BilinearInterpolation;
            pRUVRenderer.HeadingCount = 1;
            pRUVRenderer.set_Heading(0, "Probabilidad para " + iNumDias.ToString() + " días");

            pRUVRenderer.set_ClassCount(0, 6);
            AsignarColorAClase(0, "", 255, 255, 255, pRUVRenderer);
            AsignarColorAClase(1, "Muy Baja", 0, 255, 0, pRUVRenderer);
            AsignarColorAClase(2, "Baja", 255, 240, 70, pRUVRenderer);
            AsignarColorAClase(3, "Moderada", 255, 220, 100, pRUVRenderer);
            AsignarColorAClase(4, "Alta", 255, 100, 20, pRUVRenderer);
            AsignarColorAClase(5, "Muy Alta", 255, 0, 0, pRUVRenderer);

            pRUVRenderer.UseDefaultSymbol = false;
            pRRenderer.Update();
            pRLayer.Renderer = pRRenderer;
        }
Esempio n. 4
0
        /// <summary>
        /// 浮点类型图层的唯一值渲染
        /// </summary>
        /// <param name="pStyleGalleryItem">颜色带样式</param>
        public void FloatRasterUniqueRenderer(IStyleGalleryItem pStyleGalleryItem)
        {
            if (pStyleGalleryItem == null)
            {
                MessageBox.Show(@"Color ramp cannot be empty");
                return;
            }
            IRasterUniqueValueRenderer uniqueValueRenderer = new RasterUniqueValueRendererClass();
            IRasterRenderer            pRasterRenderer     = uniqueValueRenderer as IRasterRenderer;

            pRasterRenderer.Raster = rasterLayer.Raster;
            pRasterRenderer.Update();
            //必须设置栅格渲染的唯一值,不然只能渲染0值
            SetRasterUniqueValue(uniqueValueRenderer);
            //获取排好序的唯一值
            List <object> uniqueValue = GetFloatSortedUniqueValue();
            int           uniqueCount = uniqueValue.Count;

            if (uniqueCount == 0)
            {
                MessageBox.Show(@"The count of unique value cannot be zero");
                return;
            }
            uniqueValueRenderer.set_ClassCount(0, uniqueCount);
            IEnumColors enumColors = RenderHelper.GetEnumColors(pStyleGalleryItem, uniqueCount);

            enumColors.Reset();
            //添加唯一值和设置标注符号
            AddValueAndSetLabelSymbol(uniqueValueRenderer, uniqueValue, enumColors);
            rasterLayer.Renderer = pRasterRenderer;
        }
Esempio n. 5
0
        /// <summary>
        /// 唯一值渲染(注意字段类型要一致)
        /// </summary>
        /// <param name="uniqueValue">唯一值列表</param>
        /// <param name="uniqueFiled">字段</param>
        /// <param name="pStyleGalleryItem">颜色带样式</param>
        public void UniqueRenderer <T>(List <T> uniqueValue, string uniqueFiled, IStyleGalleryItem pStyleGalleryItem)
        {
            if (pStyleGalleryItem == null)
            {
                MessageBox.Show(@"Color ramp cannot be empty");
                return;
            }
            IRasterUniqueValueRenderer uniqueValueRenderer = new RasterUniqueValueRendererClass();
            IRasterRenderer            pRasterRenderer     = uniqueValueRenderer as IRasterRenderer;

            pRasterRenderer.Raster = rasterLayer.Raster;
            pRasterRenderer.Update();
            int uniqueCount = uniqueValue.Count;

            if (uniqueCount == 0)
            {
                MessageBox.Show(@"The count of unique value cannot be zero");
                return;
            }
            //设置唯一值渲染属性
            SetUniqueRendererProperty(uniqueValueRenderer, uniqueFiled, uniqueCount);
            IEnumColors enumColors = RenderHelper.GetEnumColors(pStyleGalleryItem, uniqueCount);

            enumColors.Reset();
            //添加唯一值和设置标注符号
            AddValueAndSetLabelSymbol(uniqueValueRenderer, uniqueValue, enumColors);
            rasterLayer.Renderer = pRasterRenderer;
        }
Esempio n. 6
0
        //渲染评价图
        public void RenderPJT()
        {
            if (this.RasterLayerClass != null)
            {
                RasterUniqueValueRendererClass rUV = new RasterUniqueValueRendererClass();

                rUV.Raster = this.RasterLayerClass.Raster;
                rUV.Update();
                rUV.HeadingCount = 1;
                rUV.set_ClassCount(0, 4);
                rUV.Field = "Value";

                //不适宜类
                rUV.AddValue(0, 0, 0);
                RgbColorClass fc1 = new RgbColorClass();
                fc1.Red   = 255; //红色
                fc1.Green = 0;
                fc1.Blue  = 0;
                rUV.set_Label(0, 0, "不适宜类");
                IFillSymbol cs1 = new SimpleFillSymbol();
                cs1.Color = fc1 as IColor;
                rUV.set_Symbol(0, 0, cs1 as ISymbol);

                //基本适宜类
                rUV.AddValue(0, 1, 1);
                RgbColorClass fc2 = new RgbColorClass();
                fc2.Red   = 255; //
                fc2.Green = 128;
                fc2.Blue  = 64;
                rUV.set_Label(0, 1, "基本适宜类");
                IFillSymbol cs2 = new SimpleFillSymbol();
                cs2.Color = fc2 as IColor;
                rUV.set_Symbol(0, 1, cs2 as ISymbol);

                //中度适宜类
                rUV.AddValue(0, 2, 2);
                RgbColorClass fc3 = new RgbColorClass();
                fc3.Red   = 141; //
                fc3.Green = 233;
                fc3.Blue  = 86;
                rUV.set_Label(0, 2, "中度适宜类");
                IFillSymbol cs3 = new SimpleFillSymbol();
                cs3.Color = fc3 as IColor;
                rUV.set_Symbol(0, 2, cs3 as ISymbol);

                //高度适宜类
                rUV.AddValue(0, 3, 3);
                RgbColorClass fc4 = new RgbColorClass();
                fc4.Red   = 0; //
                fc4.Green = 128;
                fc4.Blue  = 0;
                rUV.set_Label(0, 3, "高度适宜类");
                IFillSymbol cs4 = new SimpleFillSymbol();
                cs4.Color = fc4 as IColor;
                rUV.set_Symbol(0, 3, cs4 as ISymbol);

                this.RasterLayerClass.Renderer = rUV;
            }
        }
        public IRasterRenderer CreateDefaultRasterRenderer(IRaster raster)
        {

            //Get raster dataset
            IRasterBandCollection rasterBandCollection = (IRasterBandCollection)raster;
            IRasterBand rasterBand = rasterBandCollection.Item(0);
            IRasterDataset rasterDataset = (IRasterDataset)rasterBand;

            //Check for TIFF format
            string format_Renamed = rasterDataset.Format;
            if (format_Renamed.Substring(0, 4) != "TIFF")
            {
                return null;
            }

            //check for bit depth
            IRasterProps rasterProps = (IRasterProps)rasterBand;
            if (rasterProps.PixelType != rstPixelType.PT_U1)
            {
                return null;
            }

            //create renderer for 1 bit raster
            //Create a unique value renderer and associate it with raster
            IRasterUniqueValueRenderer rasterUniqueValueRenderer = new RasterUniqueValueRendererClass();
            IRasterRenderer rasterRenderer = (IRasterRenderer)rasterUniqueValueRenderer;
            rasterRenderer.Raster = raster;
            rasterRenderer.Update();

            //Define the renderer
            rasterUniqueValueRenderer.HeadingCount = 1;
            rasterUniqueValueRenderer.set_Heading(0, "");
            rasterUniqueValueRenderer.set_ClassCount(0, 2);
            rasterUniqueValueRenderer.Field = "VALUE";
            rasterUniqueValueRenderer.AddValue(0, 0, 0);
            rasterUniqueValueRenderer.AddValue(0, 1, 1);
            rasterUniqueValueRenderer.set_Label(0, 0, "0");
            rasterUniqueValueRenderer.set_Label(0, 1, "1");

            // Define symbology for rendering value 0
            IColor color1 = (IColor)(CreateRGBColor(200, 50, 0)); //Brown color

            ISimpleFillSymbol simpleFillSymbol1 = new SimpleFillSymbolClass();
            simpleFillSymbol1.Color = color1;
            rasterUniqueValueRenderer.set_Symbol(0, 0, (ISymbol)simpleFillSymbol1);

            IColor color2 = new RgbColorClass();
            color2.NullColor = true;

            ISimpleFillSymbol simpleFillSymbol2 = new SimpleFillSymbolClass();
            simpleFillSymbol2.Color = color2;

            rasterUniqueValueRenderer.set_Symbol(0, 1, (ISymbol)simpleFillSymbol2);
            return rasterRenderer;
        }
Esempio n. 8
0
        public static bool UniqueValueRenderer(IColorRamp colorRamp, IRasterLayer rasterLayer, string renderfiled = "Value")
        {
            try
            {
                IRasterUniqueValueRenderer uniqueValueRenderer = new RasterUniqueValueRendererClass();
                IRasterRenderer            pRasterRenderer     = uniqueValueRenderer as IRasterRenderer;
                pRasterRenderer.Raster = rasterLayer.Raster;
                pRasterRenderer.Update();
                IUniqueValues           uniqueValues     = new UniqueValuesClass();
                IRasterCalcUniqueValues calcUniqueValues = new RasterCalcUniqueValuesClass();
                calcUniqueValues.AddFromRaster(rasterLayer.Raster, 0, uniqueValues);//iBand=0
                IRasterRendererUniqueValues renderUniqueValues = uniqueValueRenderer as IRasterRendererUniqueValues;
                renderUniqueValues.UniqueValues = uniqueValues;
                uniqueValueRenderer.Field       = renderfiled;
                colorRamp.Size = uniqueValues.Count;

                uniqueValueRenderer.HeadingCount = 1;
                uniqueValueRenderer.set_Heading(0, "All Data Value");
                uniqueValueRenderer.set_ClassCount(0, uniqueValues.Count);
                bool pOk;
                colorRamp.CreateRamp(out pOk);
                IRasterRendererColorRamp pRasterRendererColorRamp = uniqueValueRenderer as IRasterRendererColorRamp;
                pRasterRendererColorRamp.ColorRamp = colorRamp;
                for (int i = 0; i < uniqueValues.Count; i++)
                {
                    uniqueValueRenderer.AddValue(0, i, uniqueValues.get_UniqueValue(i));
                    uniqueValueRenderer.set_Label(0, i, uniqueValues.get_UniqueValue(i).ToString());
                    IFillSymbol fs = new SimpleFillSymbol();
                    //fs.Color = colorRamp.get_Color(i);
                    IColor color = new RgbColorClass();
                    if ((Convert.ToByte(uniqueValues.get_UniqueValue(i)) == 255) || (Convert.ToByte(uniqueValues.get_UniqueValue(i)) == 0))
                    {
                        color.NullColor    = true;
                        color.Transparency = 0;
                        fs.Color           = color;
                    }
                    else
                    {
                        IRgbColor rgbColor = color as IRgbColor;
                        rgbColor.Red   = 0;
                        rgbColor.Green = 255;
                        rgbColor.Blue  = 0;
                        fs.Color       = rgbColor as IColor;
                    }
                    uniqueValueRenderer.set_Symbol(0, i, fs as ISymbol);
                }
                pRasterRenderer.Update();
                rasterLayer.Renderer = pRasterRenderer;
            }
            catch (Exception ex)
            {
                return(false);
            }
            return(true);
        }
Esempio n. 9
0
        public static void uniqueRender(IRasterLayer rasterLayer)
        {
            if (rasterLayer == null)
            {
                return;
            }
            IRaster raster = rasterLayer.Raster;
            IRasterUniqueValueRenderer render       = new RasterUniqueValueRendererClass();
            IRasterRenderer            rasterRender = render as IRasterRenderer;

            rasterRender.Raster = raster;
            rasterRender.Update();
            IUniqueValues           uniqueValues     = new UniqueValuesClass();
            IRasterCalcUniqueValues calcUniqueValues = new RasterCalcUniqueValuesClass();

            calcUniqueValues.AddFromRaster(raster, 0, uniqueValues);
            IRasterRendererUniqueValues renderUniqueValues = render as IRasterRendererUniqueValues;

            renderUniqueValues.UniqueValues = uniqueValues;
            render.Field        = "Value";
            render.HeadingCount = 1;
            render.set_Heading(0, "淹没水深");
            render.set_ClassCount(0, uniqueValues.Count);

            IRandomColorRamp ramp = new RandomColorRampClass();

            ramp.Size = uniqueValues.Count;
            bool b = true;

            ramp.CreateRamp(out b);

            for (int i = 0; i < uniqueValues.Count; i++)
            {
                render.AddValue(0, i, uniqueValues.get_UniqueValue(i));
                render.set_Label(0, i, uniqueValues.get_UniqueValue(i).ToString());
                ISimpleFillSymbol fillSymbol = new SimpleFillSymbolClass();
                fillSymbol.Color = ramp.get_Color(i);
                render.set_Symbol(0, i, fillSymbol as ISymbol);
            }
            rasterRender.Update();
            rasterLayer.Renderer = rasterRender;
        }
Esempio n. 10
0
        //Ϊդ��ͼ�����ݽ���Ψһֵ��ɫ
        public static IRasterLayer GetRLayerUniqueColor(IRaster pRaster, double dMaxDis)
        {
            try
            {
                IRasterBandCollection pBandCol = pRaster as IRasterBandCollection;
                IRasterBand pBand = pBandCol.Item(0) as IRasterBand;
                bool ExistTable;
                ITable pTable = null;
                pBand.HasTable(out ExistTable);
                if (ExistTable == false)
                {
                    pTable = pBand.AttributeTable as ITable;
                }

                int iNumOfValues = pTable.RowCount(null);
                string sFieldName = "Value";
                int iFieldIndex = pTable.FindField(sFieldName);
                IRandomColorRamp pRamp = new RandomColorRampClass();
                pRamp.Size = iNumOfValues;
                pRamp.Seed = 100;
                bool a = true;
                pRamp.CreateRamp(out a);
                IFillSymbol pFSymbol = new SimpleFillSymbolClass();
                IRasterUniqueValueRenderer pUVRen = new RasterUniqueValueRendererClass();
                IRasterRenderer pRasRen = pUVRen as IRasterRenderer;
                pRasRen.Raster = pRaster;
                pRasRen.Update();
                pUVRen.HeadingCount = 1;
                pUVRen.set_Heading(0, "�ȼ�");
                pUVRen.set_ClassCount(0, iNumOfValues);
                pUVRen.Field = sFieldName;
                //��ʼѭ��������ɫ
                double LabelValue;
                double s = Convert.ToDouble(dMaxDis / 5);
                IRgbColor pRGBColor = new RgbColorClass();

                for (int i = 0; i < iNumOfValues - 1; i++)
                {
                    IColor pColor = pRamp.get_Color(i);
                    IRow pRow = pTable.GetRow(i);
                    string sLabel = "";
                    LabelValue = Convert.ToDouble(pRow.get_Value(iFieldIndex));
                    if (LabelValue >= 0 || LabelValue <= s)
                    {
                        sLabel = "0" + "��" + s.ToString();
                        pRGBColor.Red = 0;
                        pRGBColor.Green = 112;
                        pRGBColor.Blue = 255;
                        pColor = pRGBColor as IColor;
                    }
                    double h1 = s * 2;
                    if (LabelValue >= s || LabelValue <= s * 2)
                    {
                        sLabel = s.ToString() + "��" + h1.ToString();
                        pRGBColor.Red = 0;
                        pRGBColor.Green = 112;
                        pRGBColor.Blue = 255;
                        pColor = pRGBColor as IColor;
                    }
                    double h2 = s * 3;
                    if (LabelValue >= s * 2 || LabelValue <= s * 3)
                    {
                        sLabel = h1.ToString() + "��" + h2.ToString();
                        pRGBColor.Red = 0;
                        pRGBColor.Green = 112;
                        pRGBColor.Blue = 255;
                        pColor = pRGBColor as IColor;
                    }
                    double h3 = s * 4;
                    if (LabelValue >= s * 3 || LabelValue <= s * 4)
                    {
                        sLabel = h2.ToString() + "��" + h3.ToString();
                        pRGBColor.Red = 0;
                        pRGBColor.Green = 112;
                        pRGBColor.Blue = 255;
                        pColor = pRGBColor as IColor;
                    }
                    double h4 = s * 5;
                    if (LabelValue >= s * 4 || LabelValue <= s * 5)
                    {
                        sLabel = h3.ToString() + "��" + h4.ToString();
                        pRGBColor.Red = 0;
                        pRGBColor.Green = 112;
                        pRGBColor.Blue = 255;
                        pColor = pRGBColor as IColor;
                    }
                    pUVRen.AddValue(0, i, LabelValue);
                    pUVRen.set_Label(0, i, sLabel);

                    pFSymbol.Color = pColor;
                    pUVRen.set_Symbol(0, i, pFSymbol as ISymbol);

                }
                pRasRen.Update();
                IRasterLayer pRLayer = new RasterLayerClass();
                pRLayer.CreateFromRaster(pRaster);
                pRLayer.Renderer = pUVRen as IRasterRenderer;
                return pRLayer;
            }
            catch (Exception ex)
            {

                Console.WriteLine(ex.Message);
                return null;
            }
        }
Esempio n. 11
0
        /// <summary>
        /// 得到Renderer从数据库中
        /// </summary>
        /// <returns></returns>
        public static object GetRendererFromBlob(string sql, IWorkspace pConfigWks)
        {
            Exception err = null;

            SysCommon.Gis.IGisTable pGISTable = new SysCommon.Gis.SysGisTable(pConfigWks);

            //获取Renderer
            byte[] renderByte = pGISTable.GetFieldValue("Render", "Render", sql, out err) as byte[];

            //是否得到了序列化的blob,没得到,则返回NULL
            if (renderByte == null)
            {
                return(null);
            }

            IMemoryBlobStreamVariant pMemoryBlobStreamVariant = new MemoryBlobStreamClass();

            pMemoryBlobStreamVariant.ImportFromVariant((object)renderByte);
            IStream pStream = pMemoryBlobStreamVariant as IStream;

            //从数据库中得到符号的类型  shduan 20110721 增加RasterRenderer
            string strRenderType = pGISTable.GetFieldValue("Render", "RenderType", sql, out err).ToString();
            string strLyrType    = pGISTable.GetFieldValue("Render", "LayerType", sql, out err).ToString();

            if (strLyrType == "RasterLayer")
            {
                IRasterRenderer pRRenderer = null;
                switch (strRenderType)
                {
                case "RasterClassifyColorRampRenderer":
                    pRRenderer = new RasterClassifyColorRampRendererClass();
                    break;

                case "RasterUniqueValueRenderer":
                    pRRenderer = new RasterUniqueValueRendererClass();
                    break;

                case "RasterDiscreteColorRenderer":
                    pRRenderer = new RasterDiscreteColorRendererClass();
                    break;

                case "RasterRGBRenderer":
                    pRRenderer = new RasterRGBRendererClass();
                    break;

                case "RasterStretchColorRampRenderer":
                    pRRenderer = new RasterStretchColorRampRendererClass();
                    break;
                }
                IPersistStream pPersistStream = pRRenderer as IPersistStream;
                pPersistStream.Load(pStream);
                //pRRenderer = pPersistStream as IRasterRenderer;

                return(pRRenderer);
            }
            else
            {
                IFeatureRenderer pFRenderer = null;
                switch (strRenderType)
                {
                case "AnnoColor":
                    string sAnnoColor = Encoding.Default.GetString(renderByte);
                    return((object)sAnnoColor);

                case "SimpleRenderer":
                    pFRenderer = new SimpleRendererClass();
                    break;

                case "UniqueValueRenderer":
                    pFRenderer = new UniqueValueRendererClass();
                    break;

                case "ClassBreaksRenderer":
                    pFRenderer = new ClassBreaksRendererClass();
                    break;

                case "ProportionalSymbolRenderer":
                    pFRenderer = new ProportionalSymbolRendererClass();
                    break;

                case "ChartRenderer":
                    pFRenderer = new ChartRendererClass();
                    break;
                }
                IPersistStream pPersistStream = pFRenderer as IPersistStream;
                pPersistStream.Load(pStream);
                pFRenderer = pPersistStream as IFeatureRenderer;

                return(pFRenderer);
            }
        }
Esempio n. 12
0
        public static IRasterRenderer UniqueValueRenderer(IRasterLayer pRLayer, string strfield)
        {
            try
            {
                //Get the raster attribute table and the size of the table.
                IRaster2 raster = pRLayer.Raster as IRaster2;
                ITable rasterTable = (pRLayer as IAttributeTable) as ITable;
                if (rasterTable == null)
                {
                    return null;
                }
                int tableRows = rasterTable.RowCount(null);
                //Create colors for each unique value.
                ArrayList value_array = new ArrayList();
                for (int i = 0; i < rasterTable.RowCount(null); i++)
                {
                    IRow row = rasterTable.GetRow(i);
                    string value = row.get_Value(row.Fields.FindField(strfield)).ToString();
                    if (value_array.Contains(value))
                    {
                        ;
                    }
                    else
                    {
                        value_array.Add(value);
                    }
                }

                //Create a unique value renderer.
                IRasterUniqueValueRenderer uvRenderer = new RasterUniqueValueRendererClass();
                IRasterRenderer rasterRenderer = (IRasterRenderer)uvRenderer;
                rasterRenderer.Raster = raster as IRaster;
                rasterRenderer.Update();
                //Set the renderer properties.
                uvRenderer.HeadingCount = 1;
                //uvRenderer.set_Heading(0, "所有类别");
                uvRenderer.set_ClassCount(0, value_array.Count);
                uvRenderer.Field = "VALUE"; //Or any other field in the table.

                ISimpleFillSymbol fillSymbol;
                for (int i = 0; i < tableRows; i++)
                {
                    IRow row = rasterTable.GetRow(i);
                    for (int value_index = 0; value_index < value_array.Count; value_index++)
                    {
                        string value = value_array[value_index].ToString();
                        string field = row.get_Value((row.Fields.FindField(strfield))).ToString();

                        if (value == field)
                        {
                            uvRenderer.AddValue(0, value_index, row.get_Value(1));

                            uvRenderer.set_Label(0, value_index, row.get_Value(row.Fields.FindField(strfield)).ToString());
                            fillSymbol = new SimpleFillSymbolClass();

                            if (value == "不适宜区")
                                fillSymbol.Color = CvtRGB(255, 255, 255);
                            else if (value == "次适宜区")
                                fillSymbol.Color = CvtRGB(76, 230, 0);
                            else
                                fillSymbol.Color = CvtRGB(38, 115, 0);

                            uvRenderer.set_Symbol(0, value_index, (ISymbol)fillSymbol);
                        }
                    }
                }

                return rasterRenderer;
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);
                return null;
            }
        }
Esempio n. 13
0
        /// <summary>
        /// 设置图层渲染器。
        /// </summary>
        /// <param name="rasterLayer">需要渲染唯一值的栅格图层。</param>
        /// <param name="renderfiled">渲染的字段(可选,默认为Value)。</param>
        /// <returns></returns>
        public IRasterRenderer UniqueValueRender(IRasterLayer rasterLayer, string renderfiled = "Value")
        {
            try
            {
                //这是从头用到尾的对象
                IRasterUniqueValueRenderer uniqueValueRenderer = new RasterUniqueValueRendererClass
                {
                    Field = renderfiled
                };
                IRasterRenderer pRasterRenderer = uniqueValueRenderer as IRasterRenderer;

                //计算栅格唯一值
                IRasterCalcUniqueValues calcUniqueValues = new RasterCalcUniqueValuesClass();
                IUniqueValues           uniqueValues     = new UniqueValuesClass();
                calcUniqueValues.AddFromRaster(rasterLayer.Raster, 0, uniqueValues);

                //设置唯一值
                IRasterRendererUniqueValues renderUniqueValues = uniqueValueRenderer as IRasterRendererUniqueValues;
                renderUniqueValues.UniqueValues = uniqueValues;

                //创建色带
                IRgbColor             pFromColor = FromIC;
                IRgbColor             pToColor   = ToIC;
                IAlgorithmicColorRamp colorRamp  = new AlgorithmicColorRampClass
                {
                    FromColor = pFromColor,
                    ToColor   = pToColor,
                    Size      = uniqueValues.Count
                };
                bool pOk;
                colorRamp.CreateRamp(out pOk);

                //设置标题
                uniqueValueRenderer.HeadingCount = 1;
                uniqueValueRenderer.set_Heading(0, "All Data Value");
                uniqueValueRenderer.set_ClassCount(0, uniqueValues.Count);

                //设置色带
                IRasterRendererColorRamp pRasterRendererColorRamp = uniqueValueRenderer as IRasterRendererColorRamp;
                pRasterRendererColorRamp.ColorRamp = colorRamp;

                //需要对算出来的唯一值升序重排
                double[] tmp = new double[uniqueValues.Count];
                for (int i = 0; i < uniqueValues.Count; i++)
                {
                    tmp[i] = Convert.ToDouble(uniqueValues.get_UniqueValue(i));
                }
                System.Array.Sort(tmp);

                //对每一个唯一值设置颜色
                for (int i = 0; i < uniqueValues.Count; i++)
                {
                    //添加唯一值并设置标签
                    uniqueValueRenderer.AddValue(0, i, tmp[i]);
                    uniqueValueRenderer.set_Label(0, i, tmp[i].ToString());

                    //透明色及参数
                    IRgbColor zerocolor = new RgbColorClass()
                    {
                        Transparency = 0,
                        NullColor    = true,
                    };

                    IFillSymbol fs = new SimpleFillSymbol(); //唯一值填充符号
                    if (tmp[i] == 0)                         //将值为0的栅格颜色设为透明
                    {
                        fs = new SimpleFillSymbol
                        {
                            Color = zerocolor
                        };
                    }
                    else   //值不为零则设置为色带对应索引颜色
                    {
                        fs.Color = colorRamp.get_Color(i);
                    }
                    uniqueValueRenderer.set_Symbol(0, i, fs as ISymbol);    //对唯一值设置色带对应颜色
                }
                return(pRasterRenderer);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
                return(null);
            }
        }
Esempio n. 14
0
        //2009-5-21
        /// <summary> 
        /// Ψһֵ��ȾRaster 
        /// </summary> 
        /// <param name="pLayer">rasterͼ��</param> 
        /// <remarks></remarks> 
        public void UValueRenderer(IRasterLayer pLayer, string VlaueFieldName,IList<Color> lstColor/*IColor fromColor, IColor toColor*/,IColor noColor)
        {
            //��ȡRater
            IRasterLayer pRLayer = pLayer;
            IRaster pRaster =  pRLayer.Raster;

            // ��ȡ������Ҳ���Ǽ�¼��
            IRasterBandCollection pBandCol = pRaster as IRasterBandCollection;
            IRasterBand pBand = pBandCol.Item(0);
            bool TableExist ;
            pBand.HasTable(out TableExist);
            if (!TableExist) return ;

            ITable pTable = pBand.AttributeTable;
            int NumOfValues = 0;
            NumOfValues = pTable.RowCount(null);

            // Specified a field and get the field index for the specified field to be rendered.
            //ָ��һ���ֶΣ���ȡ���ֶζ�Ӧ���ֶ���ţ�ʹ�ø��ֶν�����Ⱦ
            int FieldIndex = 0;

            string FieldName =null;
            if (VlaueFieldName.Length > 0)
                FieldName = VlaueFieldName;
            //Value ��Ĭ�ϵ��ֶΣ�����ָ���������ֶ���
            FieldIndex = pTable.FindField(FieldName);
            if (FieldIndex < 0)
                return;

            //bool bRamp;
            ISimpleFillSymbol pFSymbol = default(ISimpleFillSymbol);

            // Create UniqueValue renderer and QI RasterRenderer
            IRasterUniqueValueRenderer pUVRen = new RasterUniqueValueRendererClass();
            IRasterRenderer pRasRen = pUVRen as IRasterRenderer;

            // Connect renderer and 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;

            IRow pRow = default(IRow);
            object LabelValue = null;
            for (int i = 0; i <= NumOfValues - 1; i++)
            {
                pRow = pTable.GetRow(i);
                //Get a row from the table
                LabelValue = pRow.get_Value(FieldIndex);
                // Get value of the given index
                pUVRen.AddValue(0, i, LabelValue);
                //Set value for the renderer
                pUVRen.set_Label(0, i,LabelValue.ToString());
                //Set label
                pFSymbol = new SimpleFillSymbol();
                pFSymbol.Color = Convert2ESRIColor(lstColor[i])/*colorRamp.get_Color(I)*/;
                //Set symbol
                pUVRen.set_Symbol(0, i,pFSymbol as ISymbol);
            }

            if (noColor.RGB != 16777215) //255 + 65535 + 255 * 65535=16777215 //����ǰ�ɫ������ɫ���򲻼ӱ���ɫ��������ɫESRIĬ��Ϊ��ɫ
                (pUVRen as IRasterDisplayProps).NoDataColor = noColor;
            // Update render and refresh layer
            pRasRen.Update();
            pRLayer.Renderer = pUVRen as IRasterRenderer;
            pRLayer.Draw(esriDrawPhase.esriDPGeography, m_MainMap.ActiveView.ScreenDisplay, null);
            m_MainMap.ActiveView.Refresh();
            m_MainTOC.Update();
        }