基于C#的AE二次开发-地图渲染之分级设色渲染符号化

我的开发环境为ArcGIS Engine 10.2与Visual studio2010。主地图名称为axMapControl1,Toc目录名为axTOCControl1,创建一个菜单或按钮,创建一个点击事件,粘贴代码修改图层与渲染字段即可实现。(注意相关事件的添加与动态链接库的引入)!

效果预览:

  • 面状符号分级设色渲染

  • 点状符号分级设色渲染

实现代码:

private void 分级设色符号化ToolStripMenuItem_Click(object sender, EventArgs e)
{try{//输入分级设色符号化的图层(我这里默认第一个图层【高耦合】)IFeatureLayer pFeatLyr = axMapControl1.get_Layer(0) as IFeatureLayer;//输入分级设色符号化的字段(我这里默认FID字段【高耦合,分级设色字段需为数值型】)string sFieldName = "FID";//要素类中数值型字段的名称//输入分级设色的数量int numclasses = 3;IGeoFeatureLayer pGeoFeatureL = pFeatLyr as IGeoFeatureLayer;object dataFrequency;object dataValues;bool ok;int breakIndex;ITable pTable = pGeoFeatureL.FeatureClass as ITable;ITableHistogram pTableHistogram = new BasicTableHistogram() as ITableHistogram;IBasicHistogram pBasicHistogram = (IBasicHistogram)pTableHistogram;pTableHistogram.Field = sFieldName;pTableHistogram.Table = pTable;pBasicHistogram.GetHistogram(out dataValues, out dataFrequency);     //获取渲染字段的值及其出现的频率IClassifyGEN pClassify = new EqualInterval();try{pClassify.Classify(dataValues, dataFrequency, ref  numclasses);  //根据获取字段的值和出现的频率对其进行等级划分 }catch { }//返回一个数组double[] Classes = pClassify.ClassBreaks as double[];int ClassesCount = Classes.GetUpperBound(0);IClassBreaksRenderer pClassBreaksRenderer = new ClassBreaksRenderer();pClassBreaksRenderer.Field = sFieldName; //设置分级字段pClassBreaksRenderer.BreakCount = ClassesCount; //设置分级数目pClassBreaksRenderer.SortClassesAscending = true;//分级后的图例是否按升级顺序排列//设置分级着色所需颜色带的起止颜色IHsvColor pFromColor = new HsvColor();pFromColor.Hue = 0;//黄色pFromColor.Saturation = 50;pFromColor.Value = 96;IHsvColor pToColor = new HsvColor();pToColor.Hue = 80;pToColor.Saturation = 100;pToColor.Value = 96;//产生颜色带对象IAlgorithmicColorRamp pAlgorithmicCR = new AlgorithmicColorRamp();pAlgorithmicCR.Algorithm = esriColorRampAlgorithm.esriHSVAlgorithm;pAlgorithmicCR.FromColor = pFromColor;pAlgorithmicCR.ToColor = pToColor;pAlgorithmicCR.Size = ClassesCount;pAlgorithmicCR.CreateRamp(out ok);//获得颜色IEnumColors pEnumColors = pAlgorithmicCR.Colors;//需要注意的是分级着色对象中的symbol和break的下标都是从0开始for (breakIndex = 0; breakIndex <= ClassesCount - 1; breakIndex++){IColor pColor = pEnumColors.Next();switch (pGeoFeatureL.FeatureClass.ShapeType){case esriGeometryType.esriGeometryPolygon:{ISimpleFillSymbol pSimpleFillS = new SimpleFillSymbol();pSimpleFillS.Color = pColor;pSimpleFillS.Style = esriSimpleFillStyle.esriSFSSolid;pClassBreaksRenderer.set_Symbol(breakIndex, (ISymbol)pSimpleFillS);//设置填充符号pClassBreaksRenderer.set_Break(breakIndex, Classes[breakIndex + 1]);//设定每一分级的分级断点break;}case esriGeometryType.esriGeometryPolyline:{ISimpleLineSymbol pSimpleLineSymbol = new SimpleLineSymbol();pSimpleLineSymbol.Color = pColor;pClassBreaksRenderer.set_Symbol(breakIndex, (ISymbol)pSimpleLineSymbol);pClassBreaksRenderer.set_Break(breakIndex, Classes[breakIndex + 1]);break;}case esriGeometryType.esriGeometryPoint:{ISimpleMarkerSymbol pSimpleMarkerSymbol = new SimpleMarkerSymbol();pSimpleMarkerSymbol.Color = pColor;pClassBreaksRenderer.set_Symbol(breakIndex, (ISymbol)pSimpleMarkerSymbol);//设置填充符号pClassBreaksRenderer.set_Break(breakIndex, Classes[breakIndex + 1]);//设定每一分级的分级断点break;}}}pGeoFeatureL.Renderer = (IFeatureRenderer)pClassBreaksRenderer;axMapControl1.Refresh();axTOCControl1.Update();}catch (Exception ex){MessageBox.Show("该字段不存在或无法渲染!");}
}

基于C#的AE二次开发-地图渲染之分级设色符号化相关推荐

  1. 基于C#的AE二次开发导出地图为JPG、TIF、PDF图片

    基于C#的AE二次开发导出地图为JPG.TIF.PDF图片 我的开发环境为ArcGIS Engine 10.2与Visual studio2010.创建一个菜单或按钮,创建一个点击事件,粘贴代码即可实 ...

  2. 基于C#的AE二次开发之地图标注

    基于C#的AE二次开发之地图标注 我的开发环境为ArcGIS Engine 10.2与Visual studio2010.主地图名称为axMapControl1,创建一个菜单或按钮,创建一个点击事件, ...

  3. 基于C#的AE二次开发之图层右键菜单打开属性表及图层相关操作

    基于C#的AE二次开发之图层右键菜单打开属性表及图层相关操作 我的开发环境为ArcGIS Engine 10.2与Visual studio2010.主地图名称为axMapControl1,Toc目录 ...

  4. 基于C#的AE二次开发之主界面设计

    上篇文章介绍了AE的安装与配置,下面介绍在VS2012中AE的简单主界面设计方法. 一.项目创建 1.打开VS2012建立项目 在打开界面后,点击新建项目,在弹出的界面中选择Visual C#--Ar ...

  5. 基于Python的ArcGIS二次开发实验实习教程

    基于Python的ArcGIS二次开发实验实习教程. ISBN编号: 9787307221772 原价(定价): 39元, 武汉大学出版社 天猫正版链接: https://detail.tmall.c ...

  6. python在材料模拟中的应用_基于Python的ABAQUS二次开发及在板料快速冲压成形模拟中的应用...

    2009 doi :10 1 3969/ j 1 issn 1 1007 2 2012 1 2009 1 04 1 013 基于 Python 的 ABAQUS 二次开发及在板料快速 冲压成形模拟中的 ...

  7. sw二次开发 python_基于C#的SolidWorks二次开发.doc

    摘要: 气动电阻点焊钳已经被各大汽车制造厂商广泛运的用于汽车焊接工艺中.它以无污染.压力稳定.动作敏捷等优点逐步替代了国内常见的液压传动焊钳,改变了液压传动滞缓的现象,从而达到了焊接循环的要求.本次毕 ...

  8. 陈伯雄lisp_基于AutoLisp的AutoCAD二次开发自动生成系统图

    龙源期刊网 http://www.qikan.com.cn 基于 AutoLisp 的 AutoCAD 二次开发自动 生成系统图 作者:郎建山 金江 来源:<科技视界> 2013 年第 2 ...

  9. CAD自控lisp_基于AutoLisp的AutoCAD二次开发自动生成系统图

    基于 AutoLisp 的 AutoCAD 二次开发自动生成系统图 [摘 要]本文主要阐述了应用 autolisp 语言二次开发 autocad 自动生成系统图的实现方案. [关键词] autocad ...

最新文章

  1. Android 如何防止用户同时点击多个控件问题
  2. 2020牛客多校第5场B-Graph完全图异或最小生成树
  3. hdu4525 威威猫系列故事——吃鸡腿
  4. Atitit.去除水印的方案
  5. java用重载实现获取元素的数据类型
  6. H盘由于IO设备错误,无法运行此项请求要怎样找到资料
  7. react hook问题讲解
  8. MD5 + salt 的加密算法
  9. 阶段3 2.Spring_07.银行转账案例_8 基于接口的动态代理回顾
  10. 全国计算机等级考试题photoshop,全国计算机等级考试之一级Photoshop试题
  11. arduino SIM868发送post请求到服务器,解决只能成功发送一次的问题
  12. BEC listen and translation exercise 39
  13. python打印列表元素_Python打印输出数组中全部元素
  14. 手机接收短信验证码生成(纯数字)
  15. C语言的access函数的用法
  16. Windows Live Message (MSN) 登陆错误解决办法 -- windows live communications platform 遇到问题需要关闭
  17. 2021年【大学生Python学习】社区小博主【孤寒者】的年度总结
  18. 4个字母的排列组合c语言,1,2,3,4四个数字有多少种排列组合,是怎样的
  19. FPGA基础入门【12】开发板USB鼠标控制
  20. 基于Php电竞赛事管理系统设计与实现

热门文章

  1. 搞笑短信笑话-我那爱上网的女朋友
  2. 在R软件中,提取时间数据中的小时数
  3. c语言二维数组中行指针,C中二维数组中行的平均值?
  4. 没什么卵用的 ICN 论文
  5. 散装与盒装CPU,你一定要知道的秘密
  6. 16GB ipad wifi版行货价格接近港行
  7. Kafka集群间同步数据方案-Flume
  8. 防御DDOS攻击终极指南
  9. maven 分模块项目 主子pom之间的引入依赖关系
  10. MyBatis学习--完整教程