Пример #1
0
        //渲染建设用地适宜级栅格图
        public void Render()
        {
            if (this.RasterLayerClass != null)
            {
                RgbColorClass pFromColor = new RgbColorClass();
                pFromColor.Red   = 255; //红色
                pFromColor.Green = 0;
                pFromColor.Blue  = 0;

                RgbColorClass pToColor = new RgbColorClass();
                pToColor.Red   = 0;
                pToColor.Green = 255; //绿色
                pToColor.Blue  = 0;

                bool ok = false;

                AlgorithmicColorRampClass acrc = new AlgorithmicColorRampClass();
                acrc.Size      = 255;
                acrc.FromColor = pFromColor as IColor;
                acrc.ToColor   = pToColor as IColor;
                acrc.CreateRamp(out ok);

                RasterStretchColorRampRendererClass scr = new RasterStretchColorRampRendererClass();
                scr.Raster = this.RasterLayerClass.Raster;   //显示图例
                scr.Update();                                //显示图例
                scr.BandIndex = 0;
                scr.ColorRamp = acrc as IColorRamp;
                scr.Update();                                //显示图例

                this.RasterLayerClass.Renderer = scr;
            }
        }
Пример #2
0
 private void btn_OkStretch_Click(object sender, EventArgs e)
 {
     try
     {
         string RasterName = cbb_RasterLayersStretch.SelectedItem.ToString();
         rasterlayer = GetRasterLayer(RasterName);
         IRasterStretchColorRampRenderer rasStreRen = new RasterStretchColorRampRendererClass();
         IRasterRenderer rasRen = rasStreRen as IRasterRenderer;
         rasRen.Raster = rasterlayer.Raster;
         rasRen.Update();
         rasStreRen.BandIndex = cbb_BandStretch.SelectedIndex;
         pListRamp            = style.pListRamp;
         rasStreRen.ColorRamp = (IColorRamp)pListRamp[cbbs_ColorStretch.SelectedIndex];
         rasRen.Update();
         rasterlayer.Renderer = rasStreRen as IRasterRenderer;
         IRasterStretch2 stretch = rasStreRen as IRasterStretch2;
         stretch.BackgroundValue = 0;
         stretch.Background      = true;
         stretch.BackgroundColor = RasterRender.GET(255, 255, 255) as IColor;
         axmapcontrol.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
         axtoccontrol.Update();
         axmapcontrol.Extent = rasterlayer.AreaOfInterest;
         this.Close();
     }
     catch (Exception ec)
     {
         MessageBox.Show(ec.Message);
     }
 }
Пример #3
0
        /// <summary>
        /// 根据单波段拉伸渲染
        /// </summary>
        /// <param name="rasterDataset">栅格数据集</param>
        /// <param name="graypos">第几波段</param>
        /// <param name="stretchType">拉伸方式</param>
        /// <param name="pFromColor">fromColor</param>
        /// <param name="pToColor">toColor</param>
        /// <returns></returns>
        public static IRasterRenderer StretchRenderer(ESRI.ArcGIS.Geodatabase.IRasterDataset rasterDataset, int graypos,
                                                      esriRasterStretchTypesEnum stretchType, IRgbColor pFromColor, IRgbColor pToColor)
        {
            try
            {
                //Create the color ramp.
                IAlgorithmicColorRamp colorRamp = new AlgorithmicColorRampClass();
                colorRamp.Size      = 255;
                colorRamp.FromColor = pFromColor;
                colorRamp.ToColor   = pToColor;
                bool createColorRamp;
                colorRamp.CreateRamp(out createColorRamp);
                //Create a stretch renderer.
                IRasterStretchColorRampRenderer stretchRenderer = new
                                                                  RasterStretchColorRampRendererClass();

                IRasterRenderer rasterRenderer = (IRasterRenderer)stretchRenderer;
                //Set the renderer properties.
                IRaster raster = rasterDataset.CreateDefaultRaster();
                rasterRenderer.Raster = raster;
                rasterRenderer.Update();
                stretchRenderer.BandIndex = graypos;
                stretchRenderer.ColorRamp = colorRamp;
                //Set the stretch type.
                IRasterStretch pRasterStretch = (IRasterStretch)rasterRenderer;
                pRasterStretch.StretchType             = stretchType;
                pRasterStretch.StandardDeviationsParam = 2;
                return(rasterRenderer);
            }
            catch
            {
                return(null);
            }
        }
Пример #4
0
        private void StretchRender()
        {
            if (comboBoxBand.SelectedItem == null)
            {
                MessageBox.Show("波段不能为空!");
                return;
            }
            IColorRamp   pColorRamp  = (IColorRamp)EnumStyleItem[comboBoxColor.SelectedIndex];
            IRasterLayer pRasterLayr = m_layer as IRasterLayer;
            IRasterStretchColorRampRenderer pStretchRenderer = new RasterStretchColorRampRendererClass();
            IRasterRenderer pRasterRenderer = (IRasterRenderer)pStretchRenderer;
            IRaster         pRaster         = pRasterLayr.Raster;

            pRasterRenderer.Raster = pRaster;
            pRasterRenderer.Update();
            pStretchRenderer.BandIndex = comboBoxBand.SelectedIndex;
            pStretchRenderer.ColorRamp = pColorRamp;
            IRasterStretch pStretchType = (IRasterStretch)pRasterRenderer;

            pStretchType.StretchType             = esriRasterStretchTypesEnum.esriRasterStretch_StandardDeviations;
            pStretchType.StandardDeviationsParam = Convert.ToDouble(textBoxStandardValue.Text);

            pRasterLayr.Renderer = pRasterRenderer;

            m_mapControl3.Refresh();
        }
Пример #5
0
 private void btnRasterOK_Click_1(object sender, EventArgs e)
 {
     try
     {
         IRasterStretchColorRampRenderer rasStreRen = new RasterStretchColorRampRendererClass();
         IRasterRenderer rasRen = rasStreRen as IRasterRenderer;
         rasRen.Raster = rasterlayer.Raster;
         rasRen.Update();
         rasStreRen.BandIndex = cmbBand.SelectedIndex;
         pListRamp = style.pListRamp;
         rasStreRen.ColorRamp = (IColorRamp)pListRamp[cmbsymRaster.SelectedIndex];
         rasRen.Update();
         rasterlayer.Renderer = rasStreRen as IRasterRenderer;
         IRasterStretch2 stretch = rasStreRen as IRasterStretch2;
         stretch.BackgroundValue = 0;
         stretch.Background = true;
         stretch.BackgroundColor = RasterRender.GET(255, 255, 255) as IColor;
         //axmapcontrol.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
         axmapcontrol.Refresh();
         axtoccontrol.Update();
         axmapcontrol.Extent = rasterlayer.AreaOfInterest;
     }
     catch (Exception ec)
     {
         MessageBox.Show(ec.Message);
     }
 }
Пример #6
0
 private void btnRasterOK_Click_1(object sender, EventArgs e)
 {
     try
     {
         IRasterStretchColorRampRenderer rasStreRen = new RasterStretchColorRampRendererClass();
         IRasterRenderer rasRen = rasStreRen as IRasterRenderer;
         rasRen.Raster = rasterlayer.Raster;
         rasRen.Update();
         rasStreRen.BandIndex = cmbBand.SelectedIndex;
         pListRamp            = style.pListRamp;
         rasStreRen.ColorRamp = (IColorRamp)pListRamp[cmbsymRaster.SelectedIndex];
         rasRen.Update();
         rasterlayer.Renderer = rasStreRen as IRasterRenderer;
         IRasterStretch2 stretch = rasStreRen as IRasterStretch2;
         stretch.BackgroundValue = 0;
         stretch.Background      = true;
         stretch.BackgroundColor = RasterRender.GET(255, 255, 255) as IColor;
         //axmapcontrol.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
         axmapcontrol.Refresh();
         axtoccontrol.Update();
         axmapcontrol.Extent = rasterlayer.AreaOfInterest;
     }
     catch (Exception ec)
     {
         MessageBox.Show(ec.Message);
     }
 }
Пример #7
0
        /// <summary>
        /// 获取拉伸标注
        /// </summary>
        /// <param name="rasterLayer">图层</param>
        /// <returns></returns>
        public static string[] GetStretchLabels(IRasterLayer rasterLayer)
        {
            IRasterStretchColorRampRenderer rasterStretchColorRampRenderer = new RasterStretchColorRampRendererClass();
            IRasterRenderer rasterRenderer = rasterStretchColorRampRenderer as IRasterRenderer;

            rasterRenderer.Raster = rasterLayer.Raster;
            rasterRenderer.Update();
            string[] labels = new string[2];
            labels[0] = rasterStretchColorRampRenderer.LabelHigh;
            labels[1] = rasterStretchColorRampRenderer.LabelLow;
            return(labels);
        }
Пример #8
0
        private IColorRamp GetCurrentColorRamp()
        {
            IRasterLayer pRasterLayr = m_layer as IRasterLayer;
            IRasterStretchColorRampRenderer pStretchRenderer = new RasterStretchColorRampRendererClass();
            IRasterRenderer pRasterRenderer = (IRasterRenderer)pStretchRenderer;
            IRaster         pRaster         = pRasterLayr.Raster;

            pRasterRenderer.Raster = pRaster;
            pRasterRenderer.Update();
            pStretchRenderer.BandIndex = comboBoxBand.SelectedIndex;
            return(pStretchRenderer.ColorRamp);
        }
Пример #9
0
        /// <summary>
        /// 拉伸渲染模式(貌似)
        /// </summary>
        /// <param name="rasterDataset"></param>
        /// <returns></returns>
        private static IRasterRenderer StretchRenderer(ESRI.ArcGIS.Geodatabase.IRasterDataset rasterDataset, int graypos, int i)
        {
            try
            {
                //Define the from and to colors for the color ramp.
                IRgbColor fromColor = new RgbColorClass();
                fromColor.Red   = 255;
                fromColor.Green = 0;
                fromColor.Blue  = 0;
                IColor toColor = new RgbColorClass();
                //此处应该是写错了
                fromColor.Red   = 0;
                fromColor.Green = 255;
                fromColor.Blue  = 0;
                //Create the color ramp.
                IAlgorithmicColorRamp colorRamp = new AlgorithmicColorRampClass();
                colorRamp.Size      = 255;
                colorRamp.FromColor = fromColor;
                colorRamp.ToColor   = toColor;
                bool createColorRamp;
                colorRamp.CreateRamp(out createColorRamp);
                //Create a stretch renderer.
                IRasterStretchColorRampRenderer stretchRenderer = new
                                                                  RasterStretchColorRampRendererClass();

                //设置显示对比度和亮度
                //((IRasterDisplayProps)stretchRenderer).BrightnessValue = -90;
                IRasterRenderer rasterRenderer = (IRasterRenderer)stretchRenderer;


                //Set the renderer properties.
                IRaster raster = rasterDataset.CreateDefaultRaster();
                rasterRenderer.Raster = raster;
                rasterRenderer.Update();
                stretchRenderer.BandIndex = graypos;
                //stretchRenderer.ColorRamp = colorRamp;
                //Set the stretch type.
                IRasterStretch stretchType = (IRasterStretch)rasterRenderer;
                stretchType.StretchType             = esriRasterStretchTypesEnum.esriRasterStretch_StandardDeviations;
                stretchType.StandardDeviationsParam = 2;
                return(rasterRenderer);
            }
            catch
            {
                return(null);
            }
        }
Пример #10
0
        public static void stretchRender(IRasterLayer rasterLayer, IColorRamp pColorRamp)
        {
            if (rasterLayer == null)
            {
                return;
            }

            IRaster raster = rasterLayer.Raster;
            IRasterStretchColorRampRenderer rasterStretchColorRampRenderer = new RasterStretchColorRampRendererClass();
            IRasterRenderer rasterRenderer = rasterStretchColorRampRenderer as IRasterRenderer;

            rasterRenderer.Raster = raster;
            rasterRenderer.Update();
            rasterStretchColorRampRenderer.ColorRamp = pColorRamp;
            rasterRenderer.Update();
            rasterLayer.Renderer = rasterStretchColorRampRenderer as IRasterRenderer;
        }
Пример #11
0
        /// <summary>
        /// 根据单波段灰度渲染
        /// </summary>
        /// <param name="rasterDataset">栅格数据集</param>
        /// <param name="graypos">第几波段</param>
        /// <returns></returns>
        public static IRasterRenderer StretchRenderer(ESRI.ArcGIS.Geodatabase.IRasterDataset rasterDataset, int graypos)
        {
            try
            {
                //Define the from and to colors for the color ramp.
                IRgbColor fromColor = new RgbColorClass();
                fromColor.Red = 255;
                fromColor.Green = 0;
                fromColor.Blue = 0;
                IColor toColor = new RgbColorClass();
                fromColor.Red = 0;
                fromColor.Green = 255;
                fromColor.Blue = 0;
                //Create the color ramp.
                IAlgorithmicColorRamp colorRamp = new AlgorithmicColorRampClass();
                colorRamp.Size = 255;
                colorRamp.FromColor = fromColor;
                colorRamp.ToColor = toColor;
                bool createColorRamp;
                colorRamp.CreateRamp(out createColorRamp);
                //Create a stretch renderer.
                IRasterStretchColorRampRenderer stretchRenderer = new
                RasterStretchColorRampRendererClass();

                //设置显示对比度和亮度
                //((IRasterDisplayProps)stretchRenderer).BrightnessValue = -90;
                IRasterRenderer rasterRenderer = (IRasterRenderer)stretchRenderer;

                //Set the renderer properties.
                IRaster raster = rasterDataset.CreateDefaultRaster();
                rasterRenderer.Raster = raster;
                rasterRenderer.Update();
                stretchRenderer.BandIndex = graypos;
                //stretchRenderer.ColorRamp = colorRamp;
                //Set the stretch type.
                IRasterStretch stretchType = (IRasterStretch)rasterRenderer;
                stretchType.StretchType = esriRasterStretchTypesEnum.esriRasterStretch_StandardDeviations;
                stretchType.StandardDeviationsParam = 2;
                return rasterRenderer;
            }
            catch
            {
                return null;
            }
        }
Пример #12
0
        private void ChangeStrechRender(IRasterLayer rasterLayer /*, double dbMaxValue, double dbMinValue*/)
        {
            IRaster pRaster = rasterLayer.Raster;
            IRasterBandCollection pRasterBandCollection = pRaster as IRasterBandCollection;
            IRasterBand           pRasterBand           = pRasterBandCollection.Item(0);

            if (pRasterBand == null)
            {
                return;
            }

            bool bFlag = false;

            pRasterBand.HasStatistics(out bFlag);
            if (!bFlag)
            {
                pRasterBand.ComputeStatsAndHist();
            }

            double dbMaxValue = double.NaN;
            double dbMinValue = double.NaN;

            IRasterStatistics pStaticts = pRasterBand.Statistics;

            dbMaxValue = pStaticts.Maximum;
            dbMinValue = pStaticts.Minimum;

            //设置最大最小渲染方式
            IRasterStretch       pRasterStretch       = new RasterStretchColorRampRendererClass();
            IRasterStretchMinMax pRasterStretchMinMax = pRasterStretch as IRasterStretchMinMax;

            pRasterStretchMinMax.UseCustomStretchMinMax = true;
            pRasterStretchMinMax.CustomStretchMin       = dbMinValue;
            pRasterStretchMinMax.CustomStretchMax       = dbMaxValue;
            pRasterStretch.StretchType = esriRasterStretchTypesEnum.esriRasterStretch_MinimumMaximum;

            //update
            IRasterStretchColorRampRenderer pStretchColorRasterRenderer = (IRasterStretchColorRampRenderer)pRasterStretch;;
            IRasterRenderer pRasterRenderer = pStretchColorRasterRenderer as IRasterRenderer;

            pRasterRenderer.Raster = rasterLayer.Raster;
            pRasterLayer.Renderer  = pStretchColorRasterRenderer as IRasterRenderer;
            pRasterRenderer.Update();
        }
Пример #13
0
        /// <summary>
        /// Creates a renderer for output rasters.
        /// </summary>
        /// <param name="pRL"></param>
        /// <param name="pColor1"></param>
        /// <param name="pColor2"></param>
        private void CreateRasterStretchRenderer(IRasterLayer pRL, IRgbColor pColor1, IRgbColor pColor2)
        {
            try
            {
                IRaster pRaster = pRL.Raster;
                IRasterStretchColorRampRenderer pStretchRen = new RasterStretchColorRampRendererClass();
                IRasterRenderer       pRasRen;
                IAlgorithmicColorRamp pRamp    = new AlgorithmicColorRampClass();
                IStyleGallery         pGallery = new StyleGalleryClass();

                bool bCreate;

                //create renderer
                pRasRen        = (IRasterRenderer)pStretchRen;
                pRasRen.Raster = pRaster;
                pRasRen.Update();

                //create color ramp
                pRamp.Size      = 255;
                pRamp.FromColor = pColor1;
                pRamp.ToColor   = pColor2;
                pRamp.CreateRamp(out bCreate);

                //apply the color ramp
                pStretchRen.BandIndex = 0;
                pStretchRen.ColorRamp = pRamp;
                IRasterStretch pRasStretch = (IRasterStretch)pStretchRen;
                pRasStretch.Background = true;
                double dValue = 0;
                pRasStretch.set_BackgroundValues(ref dValue);

                pRasRen.Update();
                pRL.Renderer = (IRasterRenderer)pStretchRen;
                ArcMap.Document.ActiveView.Refresh();
                ArcMap.Document.UpdateContents();
            }

            catch (Exception ex)
            {
                clsStatic.ShowErrorMessage(ex.ToString());
            }
        }
Пример #14
0
        private void btnRasterOK_Click(object sender, EventArgs e)
        {
            switch (tabControl1.SelectedIndex)
            {
            case 0:
                try
                {
                    IRasterStretchColorRampRenderer rasStreRen = new RasterStretchColorRampRendererClass();
                    IRasterRenderer rasRen = rasStreRen as IRasterRenderer;
                    rasRen.Raster = rasterlayer.Raster;
                    rasRen.Update();
                    rasStreRen.BandIndex = cmbBand.SelectedIndex;
                    pListRamp            = style.pListRamp;
                    rasStreRen.ColorRamp = (IColorRamp)pListRamp[cmbsymRaster.SelectedIndex];
                    rasRen.Update();
                    rasterlayer.Renderer = rasStreRen as IRasterRenderer;
                    IRasterStretch2 stretch = rasStreRen as IRasterStretch2;
                    stretch.BackgroundValue = 0;
                    stretch.Background      = true;
                    stretch.BackgroundColor = RasterRender.GET(255, 255, 255) as IColor;
                    axmapcontrol.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
                    axtoccontrol.Update();
                    axmapcontrol.Extent = rasterlayer.AreaOfInterest;
                    this.Close();
                }
                catch (Exception ec)
                {
                    MessageBox.Show(ec.Message);
                }
                break;

            case 1:
                RasterRender render = new RasterRender();
                pListRamp = style.pListRamp;
                render.RasterClassify(rasterlayer, cmbClassifyMethod.SelectedValue.ToString(), Convert.ToInt32(cmbClassifyCount.SelectedValue), (IColorRamp)pListRamp[cmbSymClassify.SelectedIndex]);
                axmapcontrol.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
                axtoccontrol.Update();
                axmapcontrol.Extent = rasterlayer.AreaOfInterest;
                break;
            }
        }
Пример #15
0
        public static IRasterRenderer StretchRender(IRasterDataset pRasterDataset)
        {
            try
            {
                //Define the from and to colors for the color ramp
                IRgbColor pFromColor = new RgbColorClass();
                pFromColor.Red   = 255;
                pFromColor.Green = 0;
                pFromColor.Blue  = 0;
                IRgbColor pToColor = new RgbColorClass();
                pToColor.Red   = 0;
                pToColor.Green = 255;
                pToColor.Blue  = 0;

                IAlgorithmicColorRamp pRamp = new AlgorithmicColorRampClass();
                pRamp.Size      = 10;
                pRamp.FromColor = pFromColor;
                pRamp.ToColor   = pToColor;
                bool createColorRamp;
                pRamp.CreateRamp(out createColorRamp);
                //create a stretch renderer
                IRasterStretchColorRampRenderer pStrechRenderer = new RasterStretchColorRampRendererClass();
                IRasterRenderer pRasterRenderer = (IRasterRenderer)pStrechRenderer;
                //set the renderer properties
                IRaster pRaster = pRasterDataset.CreateDefaultRaster();
                pRasterRenderer.Raster = pRaster;
                pRasterRenderer.Update();
                //
                pStrechRenderer.BandIndex = 0;
                pStrechRenderer.ColorRamp = pRamp;
                IRasterStretch pStretchType = (IRasterStretch)pRasterRenderer;
                pStretchType.StretchType             = esriRasterStretchTypesEnum.esriRasterStretch_StandardDeviations;
                pStretchType.StandardDeviationsParam = 2;
                return(pRasterRenderer);
            }
            catch (System.Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);
                return(null);
            }
        }
Пример #16
0
        private void btnRasterOK_Click(object sender, EventArgs e)
        {
            switch (tabControl1.SelectedIndex)
            {
                case 0:
                    try
                    {
                        IRasterStretchColorRampRenderer rasStreRen = new RasterStretchColorRampRendererClass();
                        IRasterRenderer rasRen = rasStreRen as IRasterRenderer;
                        rasRen.Raster = rasterlayer.Raster;
                        rasRen.Update();
                        rasStreRen.BandIndex = cmbBand.SelectedIndex;
                        pListRamp = style.pListRamp;
                        rasStreRen.ColorRamp = (IColorRamp)pListRamp[cmbsymRaster.SelectedIndex];
                        rasRen.Update();
                        rasterlayer.Renderer = rasStreRen as IRasterRenderer;
                        IRasterStretch2 stretch = rasStreRen as IRasterStretch2;
                        stretch.BackgroundValue = 0;
                        stretch.Background = true;
                        stretch.BackgroundColor = RasterRender.GET(255, 255, 255) as IColor;
                        axmapcontrol.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
                        axtoccontrol.Update();
                        axmapcontrol.Extent = rasterlayer.AreaOfInterest;
                        this.Close();
                    }
                    catch (Exception ec)
                    {
                        MessageBox.Show(ec.Message);
                    }
                    break;
                case 1:
                     RasterRender render = new RasterRender();
                     pListRamp = style.pListRamp;
                     render.RasterClassify(rasterlayer, cmbClassifyMethod.SelectedValue.ToString(), Convert.ToInt32(cmbClassifyCount.SelectedValue), (IColorRamp)pListRamp[cmbSymClassify.SelectedIndex]);
                     axmapcontrol.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
                     axtoccontrol.Update();
                     axmapcontrol.Extent = rasterlayer.AreaOfInterest;
                    break;

            }
        }
Пример #17
0
        private void ChangeRender2RasterStretchColorRampRender(IRasterLayer rasterLayer)
        {
            if (rasterlayer == null)
            {
                return;
            }

            //计算统计图
            IRasterBand band = GetBand(rasterLayer);

            if (band.Histogram == null)
            {
                band.ComputeStatsAndHist();
            }

            IRaster raster = rasterLayer.Raster;
            IRasterStretchColorRampRenderer rasterStretchColorRampRenderer = new RasterStretchColorRampRendererClass();
            IRasterRenderer rasterRenderer = rasterStretchColorRampRenderer as IRasterRenderer;

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

            //IAlgorithmicColorRamp algorithmicColorRamp = new AlgorithmicColorRampClass();
            //algorithmicColorRamp.Size = 255;
            //algorithmicColorRamp.FromColor = getRGBColor(255, 0, 0);
            //algorithmicColorRamp.ToColor = getRGBColor(0, 255, 0);
            //bool btrue;
            //algorithmicColorRamp.CreateRamp(out btrue);

            rasterStretchColorRampRenderer.BandIndex = cmbRasterBands.SelectedIndex;
            IColorRamp pColorRamp = (IColorRamp)EnumStyleItem[colorComboBox.SelectedIndex];

            rasterStretchColorRampRenderer.ColorRamp = pColorRamp;
            rasterRenderer.Update();
            rasterLayer.Renderer = rasterStretchColorRampRenderer as IRasterRenderer;

            axmapcontrol.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
            axtoccontrol.Update();
            axmapcontrol.Extent = rasterlayer.AreaOfInterest;
        }
Пример #18
0
        /// <summary>
        /// 打开adf文件格式栅格数据
        /// </summary>
        /// <param name="rasterPath"></param>
        /// <param name="fileName"></param>
        public static void OpenRasterLayer(string rasterPath, string fileName)
        {
            IWorkspaceFactory workspaceFactory = new RasterWorkspaceFactory();
            IWorkspace        SWorkspace       = workspaceFactory.OpenFromFile(rasterPath, 0);
            IRasterWorkspace  rasterWorkspace  = SWorkspace as IRasterWorkspace;
            IRasterDataset    pRasterDataset   = (IRasterDataset)rasterWorkspace.OpenRasterDataset(fileName);
            IRasterLayer      pRasterLayer     = new RasterLayerClass();

            pRasterLayer.CreateFromDataset(pRasterDataset);
            IAlgorithmicColorRamp colorRamp = new AlgorithmicColorRampClass()
            {
                FromColor = new RgbColorClass()
                {
                    Red = 197, Green = 68, Blue = 56
                },
                ToColor = new RgbColorClass()
                {
                    Red = 80, Green = 110, Blue = 207
                },
                Size = 100
            };//Red = 80, Green = 110, Blue = 207
            IMultiPartColorRamp multiPartColorRamp = new MultiPartColorRampClass();

            multiPartColorRamp.set_Ramp(0, colorRamp);
            bool outCreate = false;

            colorRamp.CreateRamp(out outCreate);
            //设置渲染参数
            IRasterStretchColorRampRenderer rasterStretchColorRampRenderer = new RasterStretchColorRampRendererClass();
            IRasterRenderer rasterRenderer = rasterStretchColorRampRenderer as IRasterRenderer;

            rasterRenderer.Raster = pRasterLayer.Raster;
            rasterRenderer.Update();
            rasterStretchColorRampRenderer.BandIndex = 0;
            rasterStretchColorRampRenderer.ColorRamp = multiPartColorRamp as IColorRamp;
            rasterRenderer.Update();
            pRasterLayer.Renderer = rasterRenderer;
            MainFrom.m_mapControl.AddLayer(pRasterLayer);
        }
Пример #19
0
        public static IRasterRenderer CreateESRIDefinedContinuousRenderer(GCDConsoleLib.Raster gRaster, int iClassCount, string sColorRampName, bool bInvert = false)
        {
            try
            {
                gRaster.ComputeStatistics();
                decimal maxValue        = gRaster.GetStatistics()["max"];
                int     iRound          = GetMagnitude(maxValue);
                double  maxValueRounded = Math.Round((double)maxValue, Math.Abs(iRound));

                RasterStretchColorRampRenderer stretchRenderer = new RasterStretchColorRampRendererClass();
                IRasterRenderer rasterRenderer = (IRasterRenderer)stretchRenderer;
                IRasterDataset  rasterDataset  = ArcMapUtilities.GetRasterDataset(gRaster);
                IRaster         raster         = rasterDataset.CreateDefaultRaster();
                rasterRenderer.Raster = raster;
                IColorRamp               pColorRamp       = null;
                IStyleGalleryItem        pStyleItem       = GetESRIStyleColorRamp(out pColorRamp, sColorRampName);
                IRasterRendererColorRamp pRenderColorRamp = (IRasterRendererColorRamp)rasterRenderer;
                pRenderColorRamp.ColorScheme = pStyleItem.Name;
                IRasterStretchMinMax pStretchInfo = (IRasterStretchMinMax)stretchRenderer;
                pStretchInfo.CustomStretchMin       = 0;
                pStretchInfo.CustomStretchMax       = maxValueRounded;
                pStretchInfo.UseCustomStretchMinMax = true;
                stretchRenderer.LabelHigh           = maxValueRounded.ToString();
                stretchRenderer.LabelLow            = "0.0";
                if (bInvert)
                {
                    IRasterStretch2 pStretch = (IRasterStretch2)stretchRenderer;
                    pStretch.Invert = true;
                }

                rasterRenderer.Update();
                return(rasterRenderer);
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);
                return(null);
            }
        }
        /// <summary>
        /// 依据色带渲染栅格
        /// </summary>
        /// <param name="pRasterLayer"></param>
        public void SetStretchColorRampRender(IRasterLayer pRasterLayer)
        {
            try
            {
                IRasterStretchColorRampRenderer pRampRenderer = new RasterStretchColorRampRendererClass();
                IRasterRenderer pRasterRenderer = pRampRenderer as IRasterRenderer;
                pRasterRenderer.Raster = pRasterLayer.Raster;
                pRasterRenderer.Update();
                //创建起始颜色
                IColor fromColor = GetColor(40, 146, 179);
                IColor toColor   = GetColor(255, 255, 100);
                //创建起止色带
                IAlgorithmicColorRamp pAlgorithmicColorRamp = new AlgorithmicColorRampClass();
                pAlgorithmicColorRamp.Algorithm = esriColorRampAlgorithm.esriCIELabAlgorithm;
                pAlgorithmicColorRamp.Size      = 255;
                pAlgorithmicColorRamp.FromColor = fromColor;
                pAlgorithmicColorRamp.ToColor   = toColor;
                bool btrue = true;
                pAlgorithmicColorRamp.CreateRamp(out btrue);
                //选择拉伸颜色符号的波段
                pRampRenderer.BandIndex = 0;
                pRampRenderer.ColorRamp = pAlgorithmicColorRamp as IColorRamp;
                pRasterRenderer.Update();
                pRasterLayer.Renderer = pRasterRenderer;

                this._pMap.AddLayer(pRasterLayer);
                IActiveView pActiveView = _pMap as IActiveView;
                if (pActiveView != null)
                {
                    pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
                    pActiveView.Extent = pActiveView.FullExtent;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
Пример #21
0
        /// <summary>
        /// 拉伸渲染
        /// </summary>
        /// <param name="rasterLayer">渲染图层</param>
        /// <param name="stretType">拉伸类型</param>
        /// <param name="pStyleGalleryItem">颜色带样式</param>
        public static void RasterStretchRenderer(IRasterLayer rasterLayer, esriRasterStretchTypesEnum stretType,
                                                 IStyleGalleryItem pStyleGalleryItem)
        {
            if (pStyleGalleryItem == null)
            {
                MessageBox.Show(@"Color ramp cannot be empty");
                return;
            }
            //创建拉伸渲染
            IRasterStretchColorRampRenderer stretchRenderer = new RasterStretchColorRampRendererClass();
            IRasterRenderer rasterRenderer = (IRasterRenderer)stretchRenderer;
            //设置拉伸渲染参数属性
            IRaster raster = rasterLayer.Raster;

            rasterRenderer.Raster = raster;
            rasterRenderer.Update();
            stretchRenderer.BandIndex = 0;
            stretchRenderer.ColorRamp = RenderHelper.GetColorRamp(pStyleGalleryItem, 255);
            //设置拉伸类型
            IRasterStretch stretchType = (IRasterStretch)rasterRenderer;

            stretchType.StretchType = stretType;
            rasterLayer.Renderer    = rasterRenderer;
        }
Пример #22
0
        //Ϊդ��ͼ�����ݽ���������ɫ
        public static IRasterLayer SetStretchRenderer(IRaster pRaster)
        {
            try
            {
                //������ɫ���QIդ����ɫ
                IRasterStretchColorRampRenderer pStretchRen = new RasterStretchColorRampRendererClass();
                IRasterRenderer pRasRen = pStretchRen as IRasterRenderer;
                //Ϊ��ɫ�͸�������դ������
                pRasRen.Raster = pRaster;
                pRasRen.Update();
                //���������յ���ɫ
                IColor pFromColor = new RgbColorClass();
                IRgbColor pRgbColor = pFromColor as IRgbColor;
                pRgbColor.Red = 255;
                pRgbColor.Green = 0;
                pRgbColor.Blue = 0;
                IColor pToColor = new RgbColorClass();
                pRgbColor = pToColor as IRgbColor;
                pRgbColor.Red = 0;
                pRgbColor.Green = 255;
                pRgbColor.Blue = 0;
                //������ɫ�ּ�
                IAlgorithmicColorRamp pRamp = new AlgorithmicColorRampClass();
                pRamp.Size = 255;
                pRamp.FromColor = pFromColor;
                pRamp.ToColor = pToColor;
                bool ok = true;
                pRamp.CreateRamp(out ok);
                //����ɫ�ּ�������ɫ�в�ѡ��һ������
                pStretchRen.BandIndex = 0;
                pStretchRen.ColorRamp = pRamp;
                pRasRen.Update();
                IRasterLayer pRLayer = new RasterLayerClass();
                pRLayer.CreateFromRaster(pRaster);
                pRLayer.Renderer = pStretchRen as IRasterRenderer;
                return pRLayer;

            }
            catch (Exception ex)
            {

                Console.WriteLine(ex.Message);
                return null;
            }
        }
Пример #23
0
        //IRasterStatistics rasterStatic;
        private void SetRasterSymbol(IRasterLayer rasterLayer)
        {
            //获取选择的序号
            int index = sBC.SelectedIndex;
            ISymbologyStyleClass symbologyStyleClass = axSymbologyControl1.GetStyleClass(esriSymbologyStyleClass.esriStyleClassColorRamps);
            IStyleGalleryItem    mStyleGalleryItem   = symbologyStyleClass.GetItem(index);
            //获取选择的符号
            IColorRamp select = (IColorRamp)mStyleGalleryItem.Item;
            IRasterStretchColorRampRenderer rasterStretchColorRampRenderer = new RasterStretchColorRampRendererClass();
            IRasterRenderer rasterRenderer = rasterStretchColorRampRenderer as IRasterRenderer;

            rasterRenderer.Raster = (rasterLayer).Raster;

            if (checkBox1.Checked == true)
            {
                //修改像元值 线性拉伸
                IRaster2 pRaster2  = rasterLayer.Raster as IRaster2;
                IPnt     pPntBlock = new PntClass();

                pPntBlock.X = 128;
                pPntBlock.Y = 128;

                IRasterCursor pRasterCursor = pRaster2.CreateCursorEx(pPntBlock);

                IRasterEdit pRasterEdit = pRaster2 as IRasterEdit;
                if (pRasterEdit.CanEdit())
                {
                    // IRasterBandCollection pBands = rasterLayer as IRasterBandCollection;
                    IPixelBlock3 pPixelblock3 = null;
                    int          pBlockwidth  = 0;
                    int          pBlockheight = 0;
                    System.Array pixels;
                    IPnt         pPnt = null;
                    object       pValue;
                    // long pBandCount = pBands.Count;

                    //获取Nodata
                    //IRasterProps pRasterPro = pRaster2 as IRasterProps;

                    //object pNodata = pRasterPro.NoDataValue;
                    do
                    {
                        pPixelblock3 = pRasterCursor.PixelBlock as IPixelBlock3;
                        pBlockwidth  = pPixelblock3.Width;
                        pBlockheight = pPixelblock3.Height;

                        //   for (int k = 0; k < pBandCount; k++)

                        //IRasterBandCollection bandCollection;
                        //IRasterLayer irasterLayer = rasterLayer;
                        //IRaster2 raster = rasterLayer.Raster as IRaster2;
                        //IRasterDataset rd = raster.RasterDataset;
                        //bandCollection = rd as IRasterBandCollection;
                        //IEnumRasterBand enumband = bandCollection.Bands;
                        //IRasterBand rasterBand = enumband.Next();
                        //rasterStatic = null;
                        //if (rasterBand != null && rasterBand.Statistics != null)
                        //{
                        //    rasterStatic = rasterBand.Statistics;
                        //}


                        int pixelmax, pixelmin;


                        {
                            pixels   = (System.Array)pPixelblock3.get_PixelData(0);
                            pixelmax = Convert.ToInt32(pixels.GetValue(0, 0));
                            pixelmin = pixelmax;

                            for (int i = 0; i < pBlockwidth; i++)
                            {
                                for (int j = 0; j < pBlockheight; j++)
                                {
                                    pValue = pixels.GetValue(i, j);


                                    {
                                        // pixels.SetValue(Convert.ToByte(Convert.ToInt32(pValue) * strscale), i, j);
                                        if (Convert.ToInt32(pValue) > pixelmax)
                                        {
                                            pixelmax = Convert.ToInt32(pValue);
                                        }
                                        if (Convert.ToInt32(pValue) < pixelmin)
                                        {
                                            pixelmin = Convert.ToInt32(pValue);
                                        }
                                    }
                                }
                            }
                            double strscale = ((double)pixelmax - (double)pixelmin) / 255.0;

                            for (int i = 0; i < pBlockwidth; i++)
                            {
                                for (int j = 0; j < pBlockheight; j++)
                                {
                                    pValue = pixels.GetValue(i, j);


                                    {
                                        pixels.SetValue(Convert.ToByte((Convert.ToInt32(pValue) - pixelmin) / (strscale)), i, j);
                                    }
                                }
                            }


                            pPixelblock3.set_PixelData(0, pixels);
                        }
                        pPnt = pRasterCursor.TopLeft;
                        pRasterEdit.Write(pPnt, (IPixelBlock)pPixelblock3);
                    }while (pRasterCursor.Next());
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(pRasterEdit);
                    // MessageBox.Show("done");
                }
            }



            rasterRenderer.Update();
            rasterStretchColorRampRenderer.ColorRamp = select;
            rasterRenderer.Update();
            ((IRasterLayer)rasterLayer).Renderer = rasterRenderer;
        }
Пример #24
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);
            }
        }
Пример #25
0
        public static IRasterRenderer StretchRender(IRasterDataset pRasterDataset)
        {
            try
            {
                //Define the from and to colors for the color ramp
                IRgbColor pFromColor=new RgbColorClass();
                pFromColor.Red=255;
                pFromColor.Green=0;
                pFromColor.Blue=0;
                IRgbColor pToColor=new RgbColorClass();
                pToColor.Red=0;
                pToColor.Green=255;
                pToColor.Blue=0;

                IAlgorithmicColorRamp pRamp=new AlgorithmicColorRampClass();
                pRamp.Size=10;
                pRamp.FromColor=pFromColor;
                pRamp.ToColor=pToColor;
                bool createColorRamp;
                pRamp.CreateRamp(out createColorRamp);
                //create a stretch renderer
                IRasterStretchColorRampRenderer pStrechRenderer=new RasterStretchColorRampRendererClass();
                IRasterRenderer pRasterRenderer=(IRasterRenderer)pStrechRenderer;
                //set the renderer properties
                IRaster pRaster =pRasterDataset.CreateDefaultRaster();
                pRasterRenderer.Raster=pRaster;
                pRasterRenderer.Update();
                //
                pStrechRenderer.BandIndex=0;
                pStrechRenderer.ColorRamp=pRamp;
                IRasterStretch  pStretchType=(IRasterStretch)pRasterRenderer;
                pStretchType.StretchType=esriRasterStretchTypesEnum.esriRasterStretch_StandardDeviations;
                pStretchType.StandardDeviationsParam=2;
                return pRasterRenderer;

            }
            catch (System.Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);
                return null;
            }
        }
Пример #26
0
        /// <summary>
        /// Stretchդ����Ⱦ
        /// </summary>
        /// <param name="rasterLayer">դ��ͼ��</param>
        /// <param name="VlaueVMax">Value���ֵ</param>
        /// <param name="VlaueVMin">Value��Сֵ</param>
        /// <param name="fromColor">ɫ�׿�ʼ��ɫ</param>
        /// <param name="toColor">ɫ�׽�����ɫ</param>
        /// <param name="bDisplayBackGroundV">�Ƿ���ʾ����</param>
        /// <param name="BackGroundValue">��ʾ������ֵ</param>
        /// <param name="BackGroundColor">������ɫ</param>
        /// <param name="bUserHillShade">�Ƿ�����Ӱ</param>
        /// <param name="zScale">��ӰZֵ</param>
        /// <param name="nodataColor">Nodata��ɫ</param>
        /// <param name="StretchType">Stretch����</param>
        /// <param name="StretchN">Stretch Nֵ</param>
        /// <param name="bInvert">Stretchֵ�Ƿ�ת</param>
        /// <param name="StatisticsType">ͳ������</param>
        /// <returns></returns>
        private void StretchRenderer(IRasterLayer rasterLayer, string VlaueVMax, string VlaueVMin, string ValueMedium, IColor fromColor, IColor toColor,
            bool bDisplayBackGroundV, double BackGroundValue, IColor BackGroundColor, bool bUserHillShade, Double zScale, IColor nodataColor,
            string StretchType, double StretchN, bool bInvert, string StatisticsType)
        {
            try
            {
                //Create the color ramp.
                IAlgorithmicColorRamp colorRamp = new AlgorithmicColorRampClass();
                colorRamp.FromColor = fromColor;
                colorRamp.ToColor = toColor;
                colorRamp.Size = 10;
                bool createColorRamp;
                colorRamp.CreateRamp(out createColorRamp);

                //Create a stretch renderer.
                IRasterStretchColorRampRenderer stretchRenderer = new
                  RasterStretchColorRampRendererClass();
                IRasterRenderer rasterRenderer = (IRasterRenderer)stretchRenderer;

                //Set the renderer properties.
                IRaster raster = rasterLayer.Raster;
                rasterRenderer.Raster = raster;
                rasterRenderer.Update();

                stretchRenderer.BandIndex = 0;
                stretchRenderer.ColorRamp = colorRamp;
                stretchRenderer.LabelLow = VlaueVMin;
                stretchRenderer.LabelHigh =  VlaueVMax;
                stretchRenderer.LabelMedium = ValueMedium;

                (stretchRenderer as IRasterStretchMinMax).UseCustomStretchMinMax = true;

                (stretchRenderer as IHillShadeInfo).UseHillShade = bUserHillShade;
                if (bUserHillShade == true)
                    (stretchRenderer as IHillShadeInfo).ZScale = zScale;

                (stretchRenderer as IRasterStretch2).Background = bDisplayBackGroundV;
                //double dBackGroundValue = 0;
                if (bDisplayBackGroundV == true)
                {
                    (stretchRenderer as IRasterStretch2).BackgroundValue=BackGroundValue;
                    (stretchRenderer as IRasterStretch2).BackgroundColor = BackGroundColor;

                }

                 switch(StretchType)
                {

                    case "NONE":
                        (stretchRenderer as IRasterStretch2).StretchType = esriRasterStretchTypesEnum.esriRasterStretch_NONE;
                        break;
                    case "DefaultFromSource":
                        (stretchRenderer as IRasterStretch2).StretchType = esriRasterStretchTypesEnum.esriRasterStretch_DefaultFromSource;
                        break;
                    case "Custom":
                        (stretchRenderer as IRasterStretch2).StretchType = esriRasterStretchTypesEnum.esriRasterStretch_Custom;
                        break;
                    case "StandardDeviations":
                        (stretchRenderer as IRasterStretch2).StretchType = esriRasterStretchTypesEnum.esriRasterStretch_StandardDeviations;
                        break;
                    case "HistogramEqualize":
                        (stretchRenderer as IRasterStretch2).StretchType = esriRasterStretchTypesEnum.esriRasterStretch_HistogramEqualize;
                        break;
                    case "MinimumMaximum":
                        (stretchRenderer as IRasterStretch2).StretchType = esriRasterStretchTypesEnum.esriRasterStretch_MinimumMaximum;
                        break;
                    case "HistogramSpecification":
                        (stretchRenderer as IRasterStretch2).StretchType = esriRasterStretchTypesEnum.esriRasterStretch_HistogramSpecification;
                        break;
                    case "Count":
                        (stretchRenderer as IRasterStretch2).StretchType = esriRasterStretchTypesEnum.esriRasterStretch_Count;
                        break;
                     default:
                        (stretchRenderer as IRasterStretch2).StretchType = esriRasterStretchTypesEnum.esriRasterStretch_StandardDeviations;
                         break;

                }
                (stretchRenderer as IRasterStretch2).StandardDeviationsParam = StretchN;

                switch(StatisticsType)
                {
                    case "AreaOfView":
                        (stretchRenderer as IRasterStretch2).StretchStatsType
                            = esriRasterStretchStatsTypeEnum.esriRasterStretchStats_AreaOfView;
                        //IArray ary = (stretchRenderer as IRasterStretch2).StretchStats;

                        //frmSymbology.m_statistics_Min =(double) ary.get_Element(0);
                        //frmSymbology.m_statistics_Max =(double) ary.get_Element(1);
                        //frmSymbology.m_statistics_Mean = (double)ary.get_Element(2);
                        //frmSymbology.m_statistics_stdDev = (double)ary.get_Element(3);
                        break;
                    case "Dataset":
                        (stretchRenderer as IRasterStretch2).StretchStatsType
                            = esriRasterStretchStatsTypeEnum.esriRasterStretchStats_Dataset;
                        break;
                    case "GlobalStats":
                        (stretchRenderer as IRasterStretch2).StretchStatsType
                            = esriRasterStretchStatsTypeEnum.esriRasterStretchStats_GlobalStats;
                        break;
                }

                (stretchRenderer as IRasterStretch2).Invert = bInvert;
                //Set the stretch type.
                //IRasterStretch stretchType = (IRasterStretch)rasterRenderer;
                //stretchType.StretchType = esriRasterStretchTypesEnum.esriRasterStretch_StandardDeviations;
                //stretchType.StandardDeviationsParam = 2;

                rasterLayer.Renderer =stretchRenderer as IRasterRenderer;
                rasterLayer.Draw(esriDrawPhase.esriDPGeography,m_MainMap.ActiveView.ScreenDisplay, null);
                m_MainMap.ActiveView.Refresh();
                m_MainTOC.Update();
                //return rasterRenderer;
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);
                return ;
            }
        }
Пример #27
0
		//为栅格图层数据进行拉伸着色
		public static IRasterLayer SetStretchRenderer(IRaster pRaster)
		{
			try
			{
				//创建着色类和QI栅格着色
				IRasterStretchColorRampRenderer pStretchRen=new RasterStretchColorRampRendererClass();
				IRasterRenderer pRasRen=pStretchRen as IRasterRenderer;
				//为着色和更新设置栅格数据
				pRasRen.Raster=pRaster;
				pRasRen.Update();
				//定义起点和终点颜色
				IColor pFromColor=new RgbColorClass();
				IRgbColor pRgbColor=pFromColor as IRgbColor;
				pRgbColor.Red=255;
				pRgbColor.Green=0;
				pRgbColor.Blue=0;
				IColor pToColor=new RgbColorClass();
				pRgbColor=pToColor as IRgbColor;
				pRgbColor.Red=0;
				pRgbColor.Green=255;
				pRgbColor.Blue=0;
				//创建颜色分级
				IAlgorithmicColorRamp pRamp=new AlgorithmicColorRampClass();
				pRamp.Size=255;
				pRamp.FromColor=pFromColor;
				pRamp.ToColor=pToColor;
				bool ok=true;
				pRamp.CreateRamp(out ok);
				//把颜色分级插入着色中并选择一个波段
				pStretchRen.BandIndex=0;
				pStretchRen.ColorRamp=pRamp;
				pRasRen.Update();
				IRasterLayer pRLayer=new RasterLayerClass();
				pRLayer.CreateFromRaster(pRaster);
				pRLayer.Renderer = pStretchRen as IRasterRenderer ;
				return pRLayer;	


			}
			catch(Exception ex)
			{
				
				Console.WriteLine(ex.Message);
				return null;
			}
		}
 private void btn_OkStretch_Click(object sender, EventArgs e)
 {
     try
     {
         string RasterName = cbb_RasterLayersStretch.SelectedItem.ToString();
         rasterlayer = GetRasterLayer(RasterName);
         IRasterStretchColorRampRenderer rasStreRen = new RasterStretchColorRampRendererClass();
         IRasterRenderer rasRen = rasStreRen as IRasterRenderer;
         rasRen.Raster = rasterlayer.Raster;
         rasRen.Update();
         rasStreRen.BandIndex = cbb_BandStretch.SelectedIndex;
         pListRamp = style.pListRamp;
         rasStreRen.ColorRamp = (IColorRamp)pListRamp[cbbs_ColorStretch.SelectedIndex];
         rasRen.Update();
         rasterlayer.Renderer = rasStreRen as IRasterRenderer;
         IRasterStretch2 stretch = rasStreRen as IRasterStretch2;
         stretch.BackgroundValue = 0;
         stretch.Background = true;
         stretch.BackgroundColor = RasterRender.GET(255, 255, 255) as IColor;
         axmapcontrol.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
         axtoccontrol.Update();
         axmapcontrol.Extent = rasterlayer.AreaOfInterest;
         this.Close();
     }
     catch (Exception ec)
     {
         MessageBox.Show(ec.Message);
     }
 }