Example #1
0
        /// <summary>
        /// 栅格分级渲染(注意选中字段唯一值个数不能小于设置的唯一值个数)
        /// </summary>
        /// <param name="rasterClassRenderer">分级渲染设置</param>
        /// <param name="pStyleGalleryItem">颜色带样式</param>
        public void ClassRenderer(IRasterClassifyColorRampRenderer rasterClassRenderer,
                                  IStyleGalleryItem pStyleGalleryItem)
        {
            if (pStyleGalleryItem == null)
            {
                MessageBox.Show(@"Color ramp cannot be empty");
                return;
            }
            IRasterRenderer rasterRend = (IRasterRenderer)rasterClassRenderer;

            rasterRend.Raster = rasterLayer.Raster;
            rasterRend.Update();
            IEnumColors enumColors = RenderHelper.GetColorRamp(pStyleGalleryItem, rasterClassRenderer.ClassCount).Colors;

            enumColors.Reset();
            IFillSymbol fillSymbol = new SimpleFillSymbolClass();

            for (int i = 0; i < rasterClassRenderer.ClassCount; i++)
            {
                fillSymbol.Color = enumColors.Next();
                rasterClassRenderer.set_Symbol(i, (ISymbol)fillSymbol);
                string label = Math.Round(rasterClassRenderer.Break[i], 2) + "-"
                               + Math.Round(rasterClassRenderer.Break[i + 1], 2);
                rasterClassRenderer.set_Label(i, label);
            }
            rasterLayer.Renderer = rasterRend;
        }
 private void method_4(IColorRamp icolorRamp_1,
                       IRasterClassifyColorRampRenderer irasterClassifyColorRampRenderer_1, int int_0, ITable itable_0,
                       string string_0, string string_1)
 {
     try
     {
         bool flag;
         if (string_0.Length > 0)
         {
             irasterClassifyColorRampRenderer_1.ClassField = string_0;
         }
         if (string_1.Length > 0)
         {
             irasterClassifyColorRampRenderer_1.NormField = string_1;
         }
         IRasterRenderer renderer = (IRasterRenderer)irasterClassifyColorRampRenderer_1;
         renderer.Raster = this.irasterLayer_0.Raster;
         irasterClassifyColorRampRenderer_1.ClassCount = int_0;
         renderer.Update();
         this.bool_0 = false;
         this.cboClassifyNum.SelectedIndex = irasterClassifyColorRampRenderer_1.ClassCount - 1;
         this.bool_0       = true;
         icolorRamp_1.Size = irasterClassifyColorRampRenderer_1.ClassCount;
         icolorRamp_1.CreateRamp(out flag);
         IEnumColors colors = icolorRamp_1.Colors;
         ISymbol     symbol = null;
         for (int i = 0; i < irasterClassifyColorRampRenderer_1.ClassCount; i++)
         {
             string            str;
             IColor            color   = colors.Next();
             ISimpleFillSymbol symbol2 = new SimpleFillSymbolClass
             {
                 Color = color,
                 Style = esriSimpleFillStyle.esriSFSSolid
             };
             symbol = symbol2 as ISymbol;
             irasterClassifyColorRampRenderer_1.set_Symbol(i, symbol);
             if (i == (irasterClassifyColorRampRenderer_1.ClassCount - 1))
             {
                 str = irasterClassifyColorRampRenderer_1.get_Break(i).ToString("0.####");
             }
             else
             {
                 str = irasterClassifyColorRampRenderer_1.get_Break(i).ToString("0.####") + " - " +
                       irasterClassifyColorRampRenderer_1.get_Break(i + 1).ToString("0.####");
             }
             irasterClassifyColorRampRenderer_1.set_Label(i, str);
         }
     }
     catch (Exception exception)
     {
         Logger.Current.Error("", exception, "");
     }
 }
 public void Apply()
 {
     try
     {
         IObjectCopy copy = new ObjectCopyClass();
         IRasterClassifyColorRampRenderer renderer1 =
             copy.Copy(this.irasterClassifyColorRampRenderer_0) as IRasterClassifyColorRampRenderer;
         this.irasterLayer_0.Renderer = this.irasterClassifyColorRampRenderer_0 as IRasterRenderer;
     }
     catch (Exception)
     {
     }
 }
Example #4
0
        /// <summary>
        /// 获取分级数
        /// </summary>
        /// <param name="classField">字段</param>
        /// <param name="classCount">类别总数</param>
        /// <param name="classMethod">分级算法</param>
        /// <returns></returns>
        public IList <double> GetRasterBreaks(string classField, int classCount, string classMethod)
        {
            IRasterClassifyColorRampRenderer pRClassRend = GetRasterClassifyRenderer(classField, classCount, classMethod);
            IList <double> classBreaks = new List <double>();

            //count + 1,因为分级数比间隔数(类别总数)多一个
            for (int i = 0; i < classCount + 1; i++)
            {
                //取6位小数
                classBreaks.Add(Math.Round(pRClassRend.Break[i], 2));
            }
            return(classBreaks);
        }
Example #5
0
        public static void CreateClassBreaks(double maxRasterValue, int iClassCount, IRasterClassifyColorRampRenderer pRasterClassify)
        {
            maxRasterValue = GetFormattedRange(maxRasterValue);
            double interval = maxRasterValue / iClassCount;

            interval = GetFormattedRange(interval);

            int iRound = Math.Abs(GetMagnitude(maxRasterValue));

            interval = Math.Round(interval * iRound, iRound + 1) / iRound;

            string sFormat = "#,#0";

            if (iRound < 0)
            {
                sFormat = string.Format("{0}.{1}", sFormat, new string('0', iRound + 1));
            }
            else
            {
                sFormat = "#,#0.00";
            }

            if (pRasterClassify.ClassCount != iClassCount)
            {
                pRasterClassify.ClassCount = iClassCount;
            }

            for (int i = 0; i <= iClassCount; i++)
            {
                double fBreak = Math.Round(interval * i, iRound);
                pRasterClassify.Break[i] = fBreak;

                if (i < iClassCount - 1)
                {
                    pRasterClassify.Label[i] = string.Format("{0} to {1}", fBreak.ToString(sFormat), Math.Round(fBreak + interval, iRound).ToString(sFormat));
                }
                else if (i == iClassCount - 1)
                {
                    pRasterClassify.Label[i] = "> " + fBreak.ToString(sFormat);
                }
            }
        }
Example #6
0
        /// <summary>
        /// 分类色带渲染
        /// </summary>
        /// <param name="classCount">分类数</param>
        /// <param name="colorRamp">色带</param>
        public void ClassifyColorRampRenderer(ILayer pLayerR, IColorRamp colorRamp, string classfield, System.Windows.Forms.DataGridView datagridview)
        {
            try
            {
                IRasterLayer    pRasterLayer    = pLayerR as IRasterLayer;
                IRaster         raster          = pRasterLayer.Raster;
                IRasterRenderer pRasterRenderer = new RasterClassifyColorRampRenderer() as IRasterRenderer;
                pRasterRenderer.Raster = raster;
                IRasterClassifyColorRampRenderer classifyRenderer = pRasterRenderer as IRasterClassifyColorRampRenderer;


                int classcount = datagridview.RowCount;
                classifyRenderer.ClassCount = classcount;
                classifyRenderer.ClassField = classfield;
                for (int i = 0; i < datagridview.RowCount; i++)
                {
                    classifyRenderer.set_Break(i, double.Parse(datagridview.Rows[i].Cells[0].Value.ToString()));
                }
                pRasterRenderer.Update();
                colorRamp.Size = 15;
                bool pOk;
                colorRamp.CreateRamp(out pOk);
                //create symbol for the classes
                IFillSymbol fillSymbol = new SimpleFillSymbol();
                for (int i = 0; i < classifyRenderer.ClassCount - 1; i++)
                {
                    fillSymbol.Color = colorRamp.get_Color(i);
                    classifyRenderer.set_Symbol(i, (ISymbol)fillSymbol);
                    classifyRenderer.set_Label(i, classifyRenderer.get_Break(i).ToString() + "—" + datagridview.Rows[i].Cells[1].Value.ToString());
                }
                pRasterLayer.Renderer = classifyRenderer as IRasterRenderer;
            }
            catch
            {
            }
        }
Example #7
0
        private static void CreateDoDClassBreaks(double dMax, double dMin, int iClassCount, ref IRasterClassifyColorRampRenderer pRasterClassify)
        {
            double fMax     = Math.Max(Math.Abs(dMax), Math.Abs(dMin));
            double fRange   = 2 * fMax;
            double interval = fRange / iClassCount;
            int    iRound   = GetMagnitude(fRange);

            interval = Math.Round(interval * Math.Abs(iRound), Math.Abs(iRound) + 2) / Math.Abs(iRound);
            string sFormat = "#,#0";

            if (iRound < 0)
            {
                iRound = Math.Abs(iRound) + 2;
                for (int i = 0; i <= iRound; i++)
                {
                    if (i == 0)
                    {
                        sFormat += ".";
                    }

                    sFormat += "0";
                }
            }
            else
            {
                sFormat = "#,#0.00";
            }

            //Debug.Print("Class count: " + pRasterClassify.ClassCount);
            //Debug.Print("Interval: {0}", interval);
            //Debug.Print("Max: {0}", fMax);
            for (int i = 0; i <= iClassCount; i++)
            {
                double fBreak = Math.Round(-1 * fMax + (interval * i), iRound);
                //Debug.Print("Break " + i.ToString + " = " + fBreak);
                pRasterClassify.Break[i] = fBreak;
                if (i == 0)
                {
                    pRasterClassify.Break[i] = fBreak;
                    fBreak = Math.Round(-1 * fMax + (interval * 1), iRound);
                    pRasterClassify.Label[i] = "< " + fBreak.ToString(sFormat);
                }
                else if (i < iClassCount - 1)
                {
                    if (i == 10)
                    {
                        pRasterClassify.Break[i] = 0;
                        pRasterClassify.Label[i] = (0).ToString(sFormat) + " to " + Math.Round(fBreak + interval, iRound).ToString(sFormat);
                        continue;
                    }

                    pRasterClassify.Label[i] = (fBreak).ToString(sFormat) + " to " + Math.Round(fBreak + interval, iRound).ToString(sFormat);
                }
                else if (i == iClassCount - 1)
                {
                    pRasterClassify.Label[i] = "> " + fBreak.ToString(sFormat);
                }
            }
        }