c#唯一值渲染实例代码
时间:2023-09-06 06:54:16
该着色方法一句着色图层中要素类的某个数值字段的属性值,按这个属性值为每种不同值得要素单独分配一种显示符号样式。关键在于获取该字段所有要素的唯一值(即将所有在该字段中属性值相同的要素归为一种),利用UniqueValueRenderer的AddValue方法即可进行渲染
需要添加的类库
using System.Collections;
using System.Windows.Forms;
using ESRI.ArcGIS.Display;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Geodatabase;
具体代码(本例为单值渲染)
private ISymbol GetSymbol(IColor pColor)
{
ISymbol pSymbol;
ISimpleFillSymbol pSymbolFillSymbol = new SimpleFillSymbolClass();
pSymbolFillSymbol.Color = pColor;
pSymbolFillSymbol.Outline.Width = 0.4;
pSymbol = pSymbolFillSymbol as ISymbol;
return pSymbol;
}
private void uniqueValueRendererToolStripMenuItem_Click(object sender, EventArgs e)
{
IMap pMap = this.axMapControl1.ActiveView.FocusMap;
if (pMap.LayerCount== 0)
{
MessageBox.Show("地图为空,请加载地图!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
IGeoFeatureLayer pGeoLayer = this.axMapControl1.get_Layer(0) as IGeoFeatureLayer ;
ITable pTable = pGeoLayer.FeatureClass as ITable;
ICursor pCursor;
IQueryFilter pQueryFilter = new QueryFilter();
pQueryFilter.AddField("PERIMETER");
pCursor = pTable.Search(pQueryFilter, true);//获取字段
IEnumerator pEnumreator;
//获取字段中各要素属性唯一值
IDataStatistics pDataStatistics = new DataStatisticsClass();
pDataStatistics.Field = "PERIMETER";//获取统计字段
pDataStatistics.Cursor = pCursor;
pEnumreator = pDataStatistics.UniqueValues;
int fieldcount = pDataStatistics.UniqueValueCount;//唯一值个数,以此确定颜色带范围
IUniqueValueRenderer pUniqueValueR = new UniqueValueRendererClass();
pUniqueValueR.FieldCount = 1;//单值渲染
pUniqueValueR.set_Field(0, "PERIMETER");//渲染字段
IEnumColors pEnumColor = GetColorRamp(fieldcount).Colors;
pEnumColor.Reset();
while (pEnumreator.MoveNext())
{
string value = pEnumreator.Current.ToString();
if (value != null)
{
IColor pColor = pEnumColor.Next();
ISymbol pSymbol = GetSymbol(pColor);
pUniqueValueR.AddValue(value, "PERIMETER", pSymbol);
//pUniqueValueR.set_Symbol(value, pSymbol);
}
}
pGeoLayer.Renderer = pUniqueValueR as IFeatureRenderer;
this.axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
this.axTOCControl1.Update();
}
private IRandomColorRamp GetColorRamp(int size)
{
IRandomColorRamp pRandomColorRamp = new RandomColorRampClass();
pRandomColorRamp.StartHue = 10;
pRandomColorRamp.EndHue = 300;
pRandomColorRamp.MaxSaturation =100;
pRandomColorRamp.MinSaturation = 0;
pRandomColorRamp.MaxValue = 100;
pRandomColorRamp.MinValue = 0;
pRandomColorRamp.Size = size;
bool ok = true;
pRandomColorRamp.CreateRamp(out ok);
return pRandomColorRamp;
}
其中datastatistic和uniqueValueRenderer的field必须要明确,且为相同值
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
mybatisplus逻辑删除基本实现和坑点解决
![](https://img.aspxhome.com/file/2023/2/78032_0s.png)
SpringBoot浅析安全管理之OAuth2框架
![](https://img.aspxhome.com/file/2023/7/61847_0s.png)
详解SpringCloud微服务之Rest
C#自定义缓存封装类实例
Java编译器用maven打war包出错解决办法
![](https://img.aspxhome.com/file/2023/9/119129_0s.png)
Java并发编程中的生产者与消费者模型简述
深入分析Java内存区域的使用详解
Java基于余弦方法实现的计算相似度算法示例
Spring Cache+Redis缓存数据的实现示例
![](https://img.aspxhome.com/file/2023/0/60060_0s.png)
MFC程序设计常用技巧汇总
Android布局自定义Shap圆形ImageView可以单独设置背景与图片
![](https://img.aspxhome.com/file/2023/3/137403_0s.png)
spring AOP的After增强实现方法实例分析
Android 存储路径选择方法
JavaWeb开发之使用jQuery与Ajax实现动态联级菜单效果
![](https://img.aspxhome.com/file/2023/6/60466_0s.png)
Android中SparseArray性能优化的使用方法
![](https://img.aspxhome.com/file/2023/8/139318_0s.jpg)
SpringMVC源码解读之HandlerMapping
![](https://img.aspxhome.com/file/2023/9/129199_0s.jpg)
Java中的Object.getClass()方法解析
![](https://img.aspxhome.com/file/2023/0/71840_0s.png)
浅谈C#中的委托、事件与异步
Mybatis配置文件之动态SQL配置备忘录
Android控件系列之EditText使用方法
![](https://img.aspxhome.com/file/2023/3/137313_0s.png)