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

简介:

原文 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,如需转载请自行联系原作者


相关实践学习
基于Hologres轻量实时的高性能OLAP分析
本教程基于GitHub Archive公开数据集,通过DataWorks将GitHub中的项⽬、行为等20多种事件类型数据实时采集至Hologres进行分析,同时使用DataV内置模板,快速搭建实时可视化数据大屏,从开发者、项⽬、编程语⾔等多个维度了解GitHub实时数据变化情况。
阿里云实时数仓实战 - 用户行为数仓搭建
课程简介 1)学习搭建一个数据仓库的过程,理解数据在整个数仓架构的从采集、存储、计算、输出、展示的整个业务流程。 2)整个数仓体系完全搭建在阿里云架构上,理解并学会运用各个服务组件,了解各个组件之间如何配合联动。 3&nbsp;)前置知识要求:熟练掌握 SQL 语法熟悉 Linux 命令,对 Hadoop 大数据体系有一定的了解 &nbsp; 课程大纲 第一章&nbsp;了解数据仓库概念 初步了解数据仓库是干什么的 第二章&nbsp;按照企业开发的标准去搭建一个数据仓库 数据仓库的需求是什么 架构 怎么选型怎么购买服务器 第三章&nbsp;数据生成模块 用户形成数据的一个准备 按照企业的标准,准备了十一张用户行为表 方便使用 第四章&nbsp;采集模块的搭建 购买阿里云服务器 安装 JDK 安装 Flume 第五章&nbsp;用户行为数据仓库 严格按照企业的标准开发 第六章&nbsp;搭建业务数仓理论基础和对表的分类同步 第七章&nbsp;业务数仓的搭建&nbsp; 业务行为数仓效果图&nbsp;&nbsp;
相关文章
|
11月前
|
人工智能 程序员 UED
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
490 21
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
JavaScript jenkins 持续交付
自动化部署与持续集成:使用Jenkins和Docker优化开发流程
【8月更文挑战第31天】在软件开发的世界里,时间就是一切。本文将引导你通过Jenkins和Docker的强大组合,实现自动化部署和持续集成,让你的开发流程如丝般顺滑。我们将从基础设置开始,逐步深入到构建管道,最终实现一键部署的梦想。准备好让你的开发效率飞跃,一起探索这个令人兴奋的旅程吧!
|
边缘计算 运维 安全
服务化架构 (SBA) 在 5G 核心网中的关键作用
服务化架构 (SBA) 在 5G 核心网中的关键作用
881 1
|
运维 前端开发 JavaScript
SpringBoot+Vue打造公司货物订单管理系统
SpringBoot+Vue打造公司货物订单管理系统
632 0
SpringBoot+Vue打造公司货物订单管理系统
|
C语言 Perl
西门子S7-1200编程实例,电动机起保停控制梯形图如何编写?
本篇我们通过一个电动机起保停控制的实例,介绍S7-1200的使用方法,按下瞬时启动按钮I0.6,电动机Q0.0启动,按下瞬时停止按钮I0.7,电动机Q0.0停止。
西门子S7-1200编程实例,电动机起保停控制梯形图如何编写?
|
人工智能 安全 自动驾驶
人工智能浪潮下的隐私保护:挑战与策略
本文旨在探讨人工智能技术发展对个人隐私保护所带来的挑战,并提出相应的应对策略。通过分析当前人工智能应用中数据收集和处理的常见模式,揭示其对个人隐私的潜在威胁。同时,结合最新的法律法规和技术手段,提出一系列隐私保护措施,旨在平衡技术创新与个人权益的保护。
624 0
|
存储 C语言 索引
C语言一维数组的定义与初始化技术详解
C语言一维数组的定义与初始化技术详解
485 0
|
机器学习/深度学习 人工智能 安全
一文搞懂隐私计算
一文搞懂隐私计算
4610 0
|
存储 运维 算法
关于innodb中查询的定位方法
原创转载请注明出处 源码版本 5.7.14 涉及源码文件 page0cur.cc page0page.h page0page.cc rem0cmp.cc 为什么谈及定位方法,因为在innodb中,比如一个插入语句我们需要定位在哪里插入(PAGE_CUR_LE),比如一个查询语句我们需要定位到其第一个需要读取数据的位置,因此定位方法是查询的根本。
1635 0