c#唯一值渲染实例代码

该着色方法一句着色图层中要素类的某个数值字段的属性值,按这个属性值为每种不同值得要素单独分配一种显示符号样式。关键在于获取该字段所有要素的唯一值(即将所有在该字段中属性值相同的要素归为一种),利用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必须要明确,且为相同值

时间: 2013-12-17

C#实现随机数产生类实例

本文实例讲述了C#实现随机数产生类.分享给大家供大家参考.具体分析如下: 这个类主要扩展的random的使用,对一个经常需要使用的随机数生成进行了封装,可以产生指定范围内的随机数,可以随机生成字符串等 using System; namespace DotNet.Utilities { /// <summary> /// BaseRandom /// 产生随机数 /// /// 随机数管理,最大值.最小值可以自己进行设定. /// </summary> public class B

C#随机设置900-1100毫秒延迟的方法

本文实例讲述了C#随机设置900-1100毫秒延迟的方法.分享给大家供大家参考.具体如下: using System; using System.Threading; ///<summary> /// A time delay of 900..1100 milliseconds ///</summary> namespace RobvanderWoude { class WaitASecond { static void Main( string[] args ) { // Cho

C#利用时间和随即字符串创建唯一的订单编号

使用RNGCryptoServiceProvider类创建唯一的最多8位数字符串,再在前面拼接上年月日时分秒产生的字符串,最大限度的保证生成的字符串是唯一的. 大家也可以根据自己的需求修改,日期可以取值到毫秒,这样更能保证生成的字符串是唯一的. private static string GetUniqueKey() { int maxSize = 8; int minSize = 5; char[] chars = new char[62]; string a; a = "abcdefghij

C#生成随机数的方法小结

本文实例总结了C#生成随机数的方法.分享给大家供大家参考.具体分析如下: 开始,很简单地使用System.Random类来生成随机数.很快,问题就来了,发现当random的生成间隔小于1ms时,随机数就重复了(仅限于每次都新建Random对象),因为新建random时候是默认以当前时间作为随机种子的.将random改为单例,重复数的几率小了,但是随机数在一段时间后循环了(伪随机数嘛,没办法,要求不了这么多的). 所以,特意在网上找了一些资料,并亲自作了一些性能比较,在此作些总结. System.

C#生成唯一不重复订单号

在弄电商类网站的时候,往往是根据年月日时分秒的格式生成订单号(yyyyMMddHHmmss),为了解决并发性,就直接在生成订单号的区域块加上lock. 下面,我们来简单测试一下. 1.新建项目(控制台应用程序) 2.新建一个类:OrderIdHelper.cs /// <summary> /// 订单助手 /// </summary> class OrderIdHelper { private static readonly object Locker = new object()

C# 生成随机数的代码

/// 构造随机数 种子 static int GetRandomSeed() { byte[] bytes = new byte[4]; System.Security.Cryptography.RNGCryptoServiceProvider rng = new System.Security.Cryptography.RNGCryptoServiceProvider(); rng.GetBytes(bytes); return BitConverter.ToInt32(bytes, 0);

C#生成不重复随机字符串类

本文实例讲述了C#生成不重复随机字符串类.分享给大家供大家参考.具体如下: 这个C#类用于随机产生不重复的字符串,可以指定字符串范围,可以指定要产生字符串的长度 using System; namespace DotNet.Utilities { public class RandomOperate { // 一:随机生成不重复数字字符串 private int rep = 0; public string GenerateCheckCodeNum(int codeCount) { string

C#生成指定范围内的不重复随机数

C#生成指定范围内的不重复随机数 // Number随机数个数 // minNum随机数下限 // maxNum随机数上限 public int[] GetRandomArray(int Number,int minNum,int maxNum) { int j; int[] b=new int[Number]; Random r=new Random(); for(j=0;j<Number;j++) { int i=r.Next(minNum,maxNum+1); int num=0; for

C#生成唯一值的方法汇总

生成唯一值的方法很多,下面就不同环境下生成的唯一标识方法一一介绍,作为工作中的一次总结,有兴趣的可以自行测试: 一.在 .NET 中生成 1.直接用.NET Framework 提供的 Guid() 函数,此种方法使用非常广泛.GUID(全局统一标识符)是指在一台机器上生成的数字,它保证对在同一时空中的任何两台计算机都不会生成重复的 GUID 值(即保证所有机器都是唯一的).关于GUID的介绍在此不作具体熬述,想深入了解可以自行查阅MSDN.代码如下: 复制代码 代码如下: using Syst

C#利用Random得随机数求均值、方差、正态分布的方法

本文实例讲述了C#利用Random得随机数求均值.方差.正态分布的方法.分享给大家供大家参考.具体如下: 最近在做中小学试卷分析系统,其中数据的分析让自己很头疼,整个系统采用B/S架构.在分析试卷难度梯度的时候需要用到正态分布,自己做了一些,也查阅了一些资料,终于掌握了将一组数据分析检验,最后生成正态分布. (1)利用随机函数rand()生成(0,1)区间的100个均匀分布随机数: (2)计算这100个均匀分布随机数的均值和方差, (3)将这100个均匀分布的随机数,及其均值和方差保存到文本文件

Python求均值,方差,标准差的实例

如下所示: import numpy as np arr = [1,2,3,4,5,6] #求均值 arr_mean = np.mean(arr) #求方差 arr_var = np.var(arr) #求标准差 arr_std = np.std(arr,ddof=1) print("平均值为:%f" % arr_mean) print("方差为:%f" % arr_var) print("标准差为:%f" % arr_std) 以上这篇Pyth

C#图像处理之图像均值方差计算的方法

本文实例讲述了C#图像处理之图像均值方差计算的方法.分享给大家供大家参考.具体如下: //本函数均是基于RGB颜色空间计算 //定义图像均值函数(RGB空间) public double AnBitmap(Bitmap a) { double V = 0; Rectangle rect = new Rectangle(0, 0, a.Width, a.Height); System.Drawing.Imaging.BitmapData bmpData = a.LockBits(rect, Sys

python numpy之np.random的随机数函数使用介绍

np.random的随机数函数(1) 函数 说明 rand(d0,d1,..,dn) 根据d0‐dn创建随机数数组,浮点数, [0,1),均匀分布 randn(d0,d1,..,dn) 根据d0‐dn创建随机数数组,标准正态分布 randint(low[,high,shape]) 根据shape创建随机整数或整数数组,范围是[low, high) seed(s) 随机数种子, s是给定的种子值 np.random.rand import numpy as np a = np.random.ran

详解Python基础random模块随机数的生成

随机数参与的应用场景大家一定不会陌生,比如密码加盐时会在原密码上关联一串随机数,蒙特卡洛算法会通过随机数采样等等.Python内置的random模块提供了生成随机数的方法,使用这些方法时需要导入random模块. import random 下面介绍下Python内置的random模块的几种生成随机数的方法. 1.random.random() 随机生成 0 到 1 之间的浮点数[0.0, 1.0) . print("random: ", random.random()) #rando

pandas基于时间序列的固定时间间隔求均值的方法

如果index是时间序列就不用转datetime:但是如果时间序列是表中的某一列,可以把这一列设为index 例如: 代码: DF=df2.set_index(df1['time_slot1']) DF.index=pd.to_datetime(DF.index,unit='ns') ticket=DF.ix[:,['all_time']] #以20分钟为一个时间间隔,求出所有间隔的平均时间 A_2analysisResult=ticket.all_time.resample('20min').

python的列表List求均值和中位数实例

我就废话不多说了,直接上代码吧! import numpy as np a = [2,4,6,8,10] average_a = np.mean(a) median_a = np.median(a) 知识补充:python--寻找两个列表的中位数 题目描述: 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums1 和 nums2 不会同时为空. 示例 1: nums1

Python使用当前时间、随机数产生一个唯一数字的方法

本文实例讲述了Python使用当前时间.随机数产生一个唯一数字的方法.分享给大家供大家参考,具体如下: Python生成当前时间很简单,比Java的代码简短多了,Java产生时间可参考<Java获取当前系统事件System.currentTimeMillis()方法> 具体代码如下: #-*-coding:utf-8-*- import datetime now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")

利用PHP绘图函数实现简单验证码功能的方法

index.php <?php //===================================>>使用绘图技术绘制验证码 //1.随机产生4个随机数 $checkCode=""; for ($i=0;$i<4;$i++){ $checkCode.=dechex(rand(1, 15));// decheck()十进制转换为十六进制,即验证码上要显示的数字 } //2.存入列 session_start(); $_SESSION['checkCode'

利用pyinstaller将py文件打包为exe的方法

写在前面 做大创的时候,因为需要计算合金的各种能量.温度等一大堆数据,为了能够福泽后来的学弟学妹,我决定将我处理数据时用的python程序打包成exe,这样就可以在没有安装python环境的电脑上运行我的程序了.所以上网查了一大堆如何打包的方法,尝试了py2exe和pyinstaller这两种方法,发现还是后者更加的简单便捷.同时为了能够帮助我自己以后再想用到的时候有一个教程可以查找,我就写了这一篇博客出来,留作纪念. 前提条件 首先我们需要两个东西:python3.4版本,pyinstalle