[转] AE之分级颜色专题图渲染

本文涉及的产品
可视分析地图(DataV-Atlas),3 个项目,100M 存储空间
数据可视化 DataV(企业版),20 个大屏 1 个月
简介:

原文 AE之分级颜色专题图渲染 

参考代码1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
private  void  分级渲染ToolStripMenuItem_Click( object  sender, EventArgs e)
{
 
     //值分级
 
     IBasicHistogram pBasicHis =  new  BasicTableHistogramClass();
     ITableHistogram pTabHis = (ITableHistogram)pBasicHis;
     pTabHis.Field =  "w1" ;
 
     ITable pTab = (ITable)axMapControl1.get_Layer(0);
     pTabHis.Table = pTab;
 
 
     object  doubleArrVal, longArrFreq;
     pBasicHis.GetHistogram( out  doubleArrVal,  out  longArrFreq);
 
     IClassifyGEN pClassify =  new  EqualIntervalClass();   //NaturalBreaksClass
 
     int  nDes = 5;
 
 
 
     pClassify.Classify(doubleArrVal, longArrFreq,  ref  nDes);
 
     object  classes = pClassify.ClassBreaks;
 
 
 
     System.Array pArr = (System.Array)classes;
 
 
 
     //算法梯度颜色
 
     IAlgorithmicColorRamp pAlgoColorRamp =  new  AlgorithmicColorRampClass();
     pAlgoColorRamp.Size = pArr.Length;
     IRgbColor pFromColor =  new  RgbColorClass(), pToColor =  new  RgbColorClass();
     pFromColor.Red = 0;
     pFromColor.Green = 255;
     pFromColor.Blue = 0;
     pToColor.Red = 255;
     pToColor.Green = 0;
     pToColor.Blue = 255;
 
 
 
     pAlgoColorRamp.FromColor = pFromColor;
     pAlgoColorRamp.ToColor = pToColor;
     bool  ok =  true ;
     pAlgoColorRamp.CreateRamp( out  ok);
 
     //颜色梯度结束
 
 
     IClassBreaksRenderer pRender =  new  ClassBreaksRendererClass();
     pRender.BreakCount = pArr.Length;
     pRender.Field =  "w1" ;
     ISimpleFillSymbol pSym;
 
     for  ( int  i = 0; i < pArr.Length; i++)
     {
 
         pRender.set_Break(i, ( double )pArr.GetValue(i));
 
         pSym =  new  SimpleFillSymbolClass();
 
         pSym.Color = pAlgoColorRamp.get_Color(i);
 
         pRender.set_Symbol(i, (ISymbol)pSym);
 
     }
 
     IGeoFeatureLayer pGeoLyr = (IGeoFeatureLayer)axMapControl1.get_Layer(0);
     pGeoLyr.Renderer = (IFeatureRenderer)pRender;
 
     axMapControl1.Refresh();
     axTOCControl1.Update();
 
}

 参考代码2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
private  void  分层设色ToolStripMenuItem_Click( object  sender, EventArgs e)
{
 
             //获取当前图层 ,并把它设置成IGeoFeatureLayer的实例
             IMap pMap = axMapControl1.Map;
             ILayer pLayer = pMap.get_Layer(0)  as  IFeatureLayer;
             IFeatureLayer pFeatureLayer = pLayer  as  IFeatureLayer;
             IGeoFeatureLayer pGeoFeatureLayer = pLayer  as  IGeoFeatureLayer;
 
             //获取图层上的feature
             IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass;
             IFeatureCursor pFeatureCursor = pFeatureClass.Search( null false );
             IFeature pFeature = pFeatureCursor.NextFeature();
 
             //
             IFeatureRenderer PR=pGeoFeatureLayer.Renderer;<br>
             //JoinData("县级区域", "DZGB", "sectioncode");   //join外部表
             // int DC ;
             int   desiredClasses = 5;
             string  fieldName =  "w1" ;
             int  classesCount;
             double [] classes;
             string  strOutput =  "" ;
             bool  ok;
 
             object  dataFrequency;
             object  dataValues;
             ITable pTable ;
 
             //IClassify pClassify;
             EqualIntervalClass pClassify;
 
             //IBasicHistogram pTableHistogram = new BasicTableHistogramClass();
             //IHistogram pTableHistogram = new BasicTableHistogramClass();
             ITableHistogram pTableHistogram =  new  BasicTableHistogramClass()  as  ITableHistogram;
             IBasicHistogram pHistogram;
             IClassBreaksRenderer pClassBreaksRenderer;
             IHsvColor pFromColor;
             IHsvColor pToColor;
             IAlgorithmicColorRamp pAlgorithmicColorRamp;
             IEnumColors pEnumColors;
             IColor pColor;
             ISimpleFillSymbol pSimpleFillSymbol;
 
  
 
             pLayer = (IFeatureLayer)axMapControl1.get_Layer(0);
             pGeoFeatureLayer = (IGeoFeatureLayer)pLayer;
             pTable = (ITable)pGeoFeatureLayer;
             pHistogram = (IBasicHistogram)pTableHistogram;
 
             // Get values and frequencies for the field
             pTableHistogram.Field = fieldName;
             pTableHistogram.Table = pTable;
             pHistogram.GetHistogram( out  dataValues,  out  dataFrequency);
 
             // Put values and frequencies into an Equal Interval Classify Object
             pClassify =  new  EqualIntervalClass();
 
             //pClassify = new NaturalBreaksClass();
             pClassify.SetHistogramData(dataValues, dataFrequency);
             pClassify.Classify(dataValues, dataFrequency,  ref  desiredClasses);
 
             //pClassify.Classify(ref desiredClasses);
             classes = ( double [])pClassify.ClassBreaks;
             classesCount = classes.Length;
 
  
 
             // Initialise a new Class Breaks renderer
             // Supply the number of Class Breaks and the field to perform. the class breaks on
             pClassBreaksRenderer =  new  ClassBreaksRendererClass();
             pClassBreaksRenderer.Field = fieldName;
             pClassBreaksRenderer.BreakCount = classesCount;
             pClassBreaksRenderer.SortClassesAscending =  true ;
 
             // Use algorithmic color ramp to generate an range of colors between YELLOW to RED
             // Initial color: YELLOW
             pFromColor =  new  HsvColorClass();
             pFromColor.Hue = 60;
             pFromColor.Saturation = 100;
             pFromColor.Value = 96;
 
             // Final color: RED
             pToColor =  new  HsvColorClass();
             pToColor.Hue = 0;
             pToColor.Saturation = 100;
             pToColor.Value = 96;
             // Set up HSV Color ramp to span from YELLOW to RED
             pAlgorithmicColorRamp =  new  AlgorithmicColorRampClass();
             pAlgorithmicColorRamp.Algorithm = esriColorRampAlgorithm.esriHSVAlgorithm;
             pAlgorithmicColorRamp.FromColor = pFromColor;
             pAlgorithmicColorRamp.ToColor = pToColor;
             pAlgorithmicColorRamp.Size = classesCount;
             pAlgorithmicColorRamp.CreateRamp( out  ok);
  
 
             pEnumColors = pAlgorithmicColorRamp.Colors;
             for  ( int  index = 0; index < classesCount - 1; index++)
             {
 
                 pColor = pEnumColors.Next();
                 pSimpleFillSymbol =  new  SimpleFillSymbolClass();
                 pSimpleFillSymbol.Color = pColor;
                 pSimpleFillSymbol.Style = esriSimpleFillStyle.esriSFSSolid;
                 pClassBreaksRenderer.set_Symbol(index, (ISymbol)pSimpleFillSymbol);
                 pClassBreaksRenderer.set_Break(index, classes[index + 1]);
                 // Store each break value for user output
                 strOutput +=  "-"  + classes[index + 1] +  "\n" ;
 
             }
 
             pGeoFeatureLayer.Renderer = (IFeatureRenderer)pClassBreaksRenderer;
             //this.axMapControl1.Refresh();<br>
            /////////////////////////////////////////////////////////////////////////////////////////
            //////////////////////////////////////////////////////////////////////////////////////////
           
 
             //get the custom property from which is supposed to be the layer to be saved
             object  customProperty =  null ;
             //IMapControl3 mapControl = null;
             customProperty = axMapControl1.CustomProperty;
 
           
 
             //ask the user to set a name for the new layer file
             SaveFileDialog saveFileDialog =  new  SaveFileDialog();
             saveFileDialog.Filter =  "Layer File|*.lyr|All Files|*.*" ;
             saveFileDialog.Title =  "生成专题图" ;
             saveFileDialog.RestoreDirectory =  true ;
             saveFileDialog.FileName = System.IO.Path.Combine(saveFileDialog.InitialDirectory, pGeoFeatureLayer.Name +  ".lyr" );
  
 
             //get the layer name from the user
             DialogResult dr = saveFileDialog.ShowDialog();
             if  (saveFileDialog.FileName !=  ""  && dr == DialogResult.OK)
             {
 
                 if  (System.IO.File.Exists(saveFileDialog.FileName))
                 {
 
                     //try to delete the existing file
                     System.IO.File.Delete(saveFileDialog.FileName);
 
                 }
 
  
 
                 //create a new LayerFile instance
                 ILayerFile layerFile =  new  LayerFileClass();
                 //create a new layer file
                 layerFile.New(saveFileDialog.FileName);
                 //attach the layer file with the actual layer
                 layerFile.ReplaceContents((ILayer)pGeoFeatureLayer);
                 //save the layer file
                 layerFile.Save();
 
                 //ask the user whether he'd like to add the layer to the map
                 if  (DialogResult.Yes == MessageBox.Show( "Would you like to add the layer to the map?" "Message" , MessageBoxButtons.YesNo,MessageBoxIcon.Question))
                 {
                     axMapControl1.AddLayerFromFile(saveFileDialog.FileName, 0);
                 }
             }
 
             IActiveView pActiveView = axMapControl1.Map  as  IActiveView;
             pActiveView.Refresh();
             axTOCControl1.Update();
}

 

参考代码3

  View Code

 

参考代码4

  View Code

 

没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。


    本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/5903535.html,如需转载请自行联系原作者


相关实践学习
DataV Board用户界面概览
本实验带领用户熟悉DataV Board这款可视化产品的用户界面
阿里云实时数仓实战 - 项目介绍及架构设计
课程简介 1)学习搭建一个数据仓库的过程,理解数据在整个数仓架构的从采集、存储、计算、输出、展示的整个业务流程。 2)整个数仓体系完全搭建在阿里云架构上,理解并学会运用各个服务组件,了解各个组件之间如何配合联动。 3&nbsp;)前置知识要求 &nbsp; 课程大纲 第一章&nbsp;了解数据仓库概念 初步了解数据仓库是干什么的 第二章&nbsp;按照企业开发的标准去搭建一个数据仓库 数据仓库的需求是什么 架构 怎么选型怎么购买服务器 第三章&nbsp;数据生成模块 用户形成数据的一个准备 按照企业的标准,准备了十一张用户行为表 方便使用 第四章&nbsp;采集模块的搭建 购买阿里云服务器 安装 JDK 安装 Flume 第五章&nbsp;用户行为数据仓库 严格按照企业的标准开发 第六章&nbsp;搭建业务数仓理论基础和对表的分类同步 第七章&nbsp;业务数仓的搭建&nbsp; 业务行为数仓效果图&nbsp;&nbsp;
相关文章
|
机器学习/深度学习 图计算 图形学
同构图、异构图、属性图、非显式图
同构图(Homogeneous Graph)、异构图(Heterogeneous Graph)、属性图(Property Graph)和非显式图(Graph Constructed from Non-relational Data)。 (1)同构图:
1989 0
同构图、异构图、属性图、非显式图
|
6月前
|
JavaScript 前端开发 数据可视化
ECharts 雷达图案例001-自定义节点动画
使用ECharts创建自定义雷达图,通过JavaScript动态更新高亮和交互反馈,增强用户体验。关键步骤包括:开启动画效果,数据更新时保持图表状态,鼠标悬浮时动态高亮指标,优化动画性能。案例展示了ECharts在数据可视化中的灵活性和表现力。[查看完整案例](https://download.csdn.net/download/No_Name_Cao_Ni_Mei/89454380)。
237 0
 ECharts 雷达图案例001-自定义节点动画
|
7月前
|
存储 数据可视化
创建乐高版马赛克图
创建乐高版马赛克图
98 0
Echarts实战案例代码(48):堆叠图实现图形和坐标轴对齐的解决方案
Echarts实战案例代码(48):堆叠图实现图形和坐标轴对齐的解决方案
162 0
|
机器学习/深度学习 算法 数据可视化
可视化图布局算法浅析
图算法在前端领域考察的较少,一般除非是要写框架或者打包工具对依赖关系处理(DAG)会用到,前端对图算法的考察一般是比较少的,而对于可视化领域而言,图又是必不可少的一种展示方式,其中对于边和节点的展示布局方案结合美学效果会有不同的算法实现,本文旨在介绍一些常见的通用布局算法,其中的每个小的布局方案也会有不同的分支实现
463 0
|
算法 C# 图形学
WPF绘制深度不同颜色的3D模型填充图和线框图
原文:WPF绘制深度不同颜色的3D模型填充图和线框图 在机械测量过程中,测量的数据需要进行软件处理。通常测量一个零件之后,需要重建零件的3D模型,便于观察测量结果是否与所测工件一致。
3000 0
|
C# 图形学 传感器
WPF在3D Cad模型中利用TextureCoordinates实现颜色渐变显示偏差值的变化
原文:WPF在3D Cad模型中利用TextureCoordinates实现颜色渐变显示偏差值的变化 注:最近在做3D机械模型重建方面的软件,需要根据光栅传感器采集的数据绘制3D图形,并显示出色差以及填充和线框图。
1060 0
|
算法
分享一个算法,计算能在任何背景色上清晰显示的前景色
原文:分享一个算法,计算能在任何背景色上清晰显示的前景色 版权声明:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名吕毅(包含链接:http://blog.csdn.net/wpwalter/),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。
1109 0