c#唯一值渲染實(shí)例代碼
該著色方法一句著色圖層中要素類的某個數(shù)值字段的屬性值,按這個屬性值為每種不同值得要素單獨(dú)分配一種顯示符號樣式。關(guān)鍵在于獲取該字段所有要素的唯一值(即將所有在該字段中屬性值相同的要素歸為一種),利用UniqueValueRenderer的AddValue方法即可進(jìn)行渲染
需要添加的類庫
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";//獲取統(tǒng)計字段
pDataStatistics.Cursor = pCursor;
pEnumreator = pDataStatistics.UniqueValues;
int fieldcount = pDataStatistics.UniqueValueCount;//唯一值個數(shù),以此確定顏色帶范圍
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必須要明確,且為相同值
相關(guān)文章
C#單例模式Singleton的實(shí)現(xiàn)詳解
單例模式(Singleton?Pattern)是日常開發(fā)中最簡單的設(shè)計模式之一,它提供了一種創(chuàng)建對象的最佳方式,本文主要為大家介紹的是C#單例模式的實(shí)現(xiàn)方法,需要的可以參考一下2023-05-05C#實(shí)現(xiàn)手機(jī)拍照并且保存水印照片
這篇文章主要介紹了C#實(shí)現(xiàn)手機(jī)拍照并且保存水印照片的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-11-11C#中的delegate委托類型基本學(xué)習(xí)教程
這篇文章主要介紹了C#中的delegate委托類型基本學(xué)習(xí)教程,委托是C#語言所具有的一個重要特性,需要的朋友可以參考下2016-01-01C# RGB圖像和灰度圖像互轉(zhuǎn)的實(shí)現(xiàn)
在我們的圖像類型教程中定義了RGB顏色模型和灰度格式,本文主要介紹了C# RGB圖像和灰度圖像互轉(zhuǎn)的實(shí)現(xiàn),文中通過代碼介紹的非常清楚,具有一定的參考價值,感興趣的可以了解一下2023-08-08c#使用linq把多列的List轉(zhuǎn)化為只有指定列的List
這篇文章主要介紹了c#使用linq把多列的List轉(zhuǎn)化為只有指定列的List,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12