AE分级渲染

分级渲染classbreakrenderer位于carto类库中,进行分级渲染时,首先要将相应图层按照某一Field分级。可使用esrisystem类库中的iclassifyGEN类的classify进行分类

 1 private ISymbol GetSymbol(IColor pColor)
 2         {
 3             ISymbol pSymbol;
 4             ISimpleFillSymbol pSymbolFillSymbol = new SimpleFillSymbolClass();
 5             pSymbolFillSymbol.Color = pColor;
 6             pSymbol = pSymbolFillSymbol as ISymbol;
 7             return pSymbol;
 8         }
 9 
10         private void classBreakRendererToolStripMenuItem_Click(object sender, EventArgs e)
11         {
12             double[] classes;
13             IGeoFeatureLayer pGeoFeatureLayer = this.axMapControl1.get_Layer(0) as IGeoFeatureLayer;
14             ITable pTable = pGeoFeatureLayer.FeatureClass as ITable;//Itable接口位于Geodabase类库中
15             ITableHistogram pTableHistogram = new BasicTableHistogramClass();
16             IBasicHistogram pBasicHistogram = pTableHistogram as IBasicHistogram;
17             pTableHistogram.Field = "PERIMETER";
18             pTableHistogram.Table = pTable;
19             object dataValues;
20             object dataFrequent;
21 
22             pBasicHistogram.GetHistogram(out dataValues, out dataFrequent);//获取FeatureClass中的dataValues和datafrequent
23 
24             IClassifyGEN pClassifyGEN = new EqualIntervalClass();
25 
26             int classCount = 5;
27             pClassifyGEN.Classify(dataValues, dataFrequent, ref classCount);//根据上面的dataValues和datafrequent进行分级,分级数为classcout
28 
29             classes = (double[])pClassifyGEN.ClassBreaks;//获取分段点
30 
31             IClassBreaksRenderer pClassBreakRenderer = new ClassBreaksRenderer();
32             pClassBreakRenderer.BreakCount = 5;//断点数
33             pClassBreakRenderer.Field = "PERIMETER";
34             pClassBreakRenderer.SortClassesAscending = true;//按顺序排列
35            
36             IAlgorithmicColorRamp pColorRamp = new AlgorithmicColorRampClass();
37             IRgbColor pRgbColor1 = new RgbColorClass();
38             IRgbColor pRgbColor2 = new RgbColorClass();
39             pRgbColor1.Red = 255;
40             pRgbColor1.Green = 200;
41             pRgbColor1.Blue = 200;
42             pRgbColor2.Red = 160;
43             pRgbColor2.Green = 0;
44             pRgbColor2.Blue = 0;
45             pColorRamp.FromColor = pRgbColor2;
46             pColorRamp.ToColor = pRgbColor1;
47             pColorRamp.Size = 5;//颜色带范围
48             bool ok=true;
49             pColorRamp.CreateRamp(out ok);
50             IEnumColors pEnumColors = pColorRamp.Colors;
51             for (int i = 0; i < classCount; i++)
52             {
53                 IColor pColor = pEnumColors.Next();
54                 ISymbol pSymbol = GetSymbol(pColor);
55               
56                 pClassBreakRenderer.set_Symbol(i, pSymbol);
57                 pClassBreakRenderer.set_Label(i, classes[i].ToString() + "-" + classes[i + 1].ToString());
58                 pClassBreakRenderer.set_Break(i, classes[i+1]);
59               
60                
61                
62             }
63             pGeoFeatureLayer.Renderer = pClassBreakRenderer as IFeatureRenderer;
64             this.axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
65             axTOCControl1.Update();
66 
67 
68 
69         }

过程中需要注意的:1、分级和渲染的具体字段需指明,本例以PERIMETER字段分级和渲染    2、颜色带的size需具体指定   

 

转载于:https://www.cnblogs.com/wfmm/p/3480684.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值