小生原文 ArcEngine 产生专题图

ArcEngine提供多个着色对象用于产生专题图,可以使用标准着色方案,也可以自定义着色方案,ArcEngine提供8中标准着色方案。

一、SimpleRenderer专题图

是使用单一符号进行着色分类,不涉及对要素的数据进行处理。这种专题图同一个图层内的所有元素都是一种符号。

通过SimpleRenderer对象对Symbol进行设置后,赋予IGeoFeatureLayer接口的Renderer属性,对象实现了ITransparencyRenerer接口,通过该接口的属性,可以根据要素的某一个数值字段来设置要素显示的透明度。

该对象还实现了ISimpleRenderer接口,提供了两个重要的属性:Description和Label这两个属性用来设置图例。

/// <summary>
/// 简单渲染
/// </summary>
/// <param name="layerName">图层名字</param>
/// <param name="FillStyle">FillStyle</param>
/// <param name="pColor">FillColor</param>
/// <param name="OutLineColor">OutLineColor</param>
/// <param name="RenderLabel">样式名称注释</param>
/// <param name="Descripition">描述</param>
public void createSimpleFillSymbol(string layerName,esriSimpleFillStyle FillStyle,IColor pColor,IColor OutLineColor,string RenderLabel,string Descripition)
{
//简单填充符号
ISimpleFillSymbol simpleFillSymbol = new SimpleFillSymbolClass();
//可以用符号选择器进行
simpleFillSymbol.Style = FillStyle;
simpleFillSymbol.Color = pColor;
//创建边线符号
ISimpleLineSymbol simpleLineSymbol = new SimpleLineSymbolClass();
simpleLineSymbol.Style = esriSimpleLineStyle.esriSLSSolid;
simpleLineSymbol.Color = OutLineColor;
ISymbol symbol = simpleLineSymbol as ISymbol;
symbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen;
simpleFillSymbol.Outline = simpleLineSymbol; ISimpleRenderer simpleRender = new SimpleRendererClass();
simpleRender.Symbol = simpleFillSymbol as ISymbol;
simpleRender.Label = RenderLabel;
simpleRender.Description = Descripition; IGeoFeatureLayer geoFeatureLayer;
geoFeatureLayer = getGeoLayer(layerName);
if (geoFeatureLayer != null)
{
geoFeatureLayer.Renderer = simpleRender as IFeatureRenderer;
}
}

二、ClassBreakRenderer专题图

为分级专题图,通过要素图层中要素的某个数值字段的值,根据用户要求,将这些值分为多个级别,每个级别用不同的Symbol显示。

该对象实现了IClassBreakRenderer接口,提供了实现分级显示的属性和方法,如Field属性用于设置分级着色的字段,BreakCount属性用于设置分级的数目。

/// <summary>
/// 分级渲染
/// </summary>
/// <param name="layerName">图层名</param>
/// <param name="classCount">分级数目</param>
/// <param name="ClassField">分级字段</param>
/// <param name="FillStyle">填充样式</param>
public void createClassBreakRender(string layerName, int classCount, string ClassField, esriSimpleFillStyle FillStyle)
{
//int classCount = 6;
ITableHistogram tableHistogram;//表格直方图
IBasicHistogram basicHistogram;//Provides access to members that control histogram objects created from different data sources. ITable table;
IGeoFeatureLayer geoFeatureLayer;
geoFeatureLayer = getGeoLayer(layerName);
ILayer layer = geoFeatureLayer as ILayer;
table = layer as ITable;
tableHistogram = new BasicTableHistogramClass();
//按照 数值字段分级
tableHistogram.Table = table;
tableHistogram.Field = ClassField;
basicHistogram = tableHistogram as IBasicHistogram;
object values;
object frequencys;
//先统计每个值和各个值出现的次数
basicHistogram.GetHistogram(out values, out frequencys);
//创建平均分级对象
IClassifyGEN classifyGEN = new QuantileClass();
//用统计结果进行分级 ,级别数目为classCount
classifyGEN.Classify(values, frequencys, ref classCount);
//获得分级结果,是个 双精度类型数组
double[] classes;
classes = classifyGEN.ClassBreaks as double[];
//定义不同等级渲染的色带用色
IEnumColors enumColors = CreateAlgorithmicColorRamp(classes.Length).Colors;
IColor color; IClassBreaksRenderer classBreaksRenderer = new ClassBreaksRendererClass();
classBreaksRenderer.Field = ClassField;
classBreaksRenderer.BreakCount = classCount;//分级数目
classBreaksRenderer.SortClassesAscending = true;//定义分类是否在TOC中显示Legend ISimpleFillSymbol simpleFillSymbol;
for (int i = 0; i < classes.Length - 1; i++)
{
color = enumColors.Next();
simpleFillSymbol = new SimpleFillSymbolClass();
simpleFillSymbol.Color = color;
simpleFillSymbol.Style = FillStyle; classBreaksRenderer.set_Symbol(i, simpleFillSymbol as ISymbol);
classBreaksRenderer.set_Break(i, classes[i]);
}
if (geoFeatureLayer != null)
{
geoFeatureLayer.Renderer = classBreaksRenderer as IFeatureRenderer;
} }

三、UniqueValueRenderer专题图

是依据要素图层中的某个字段的不同值,给每个要素一个单独的颜色,以区分存在的每一个要素。

UniqueValueRenderer实现了IUniqueValueRenderer接口,提供了各种属性和方法,如AddValue方法用于将单个要素的某个字段值和与之相匹配的着色符号加入到UniqueValueRenderer对象。

/// <summary>
/// 单一值渲染(单字段)
/// </summary>
/// <param name="layerName">图层名</param>
/// <param name="RenderField">渲染字段</param>
/// <param name="FillStyle">填充样式</param>
/// <param name="valueCount">字段的唯一值个数</param>
public void createUniqueValueRander(string layerName, string RenderField, esriSimpleFillStyle FillStyle,int valueCount)
{
IGeoFeatureLayer geoFeatureLayer;
geoFeatureLayer = getGeoLayer(layerName);
IUniqueValueRenderer uniqueValueRenderer = new UniqueValueRendererClass();
//可以设置多个字段
uniqueValueRenderer.FieldCount = 1;//0-3个
uniqueValueRenderer.set_Field(0, RenderField); //简单填充符号
ISimpleFillSymbol simpleFillSymbol = new SimpleFillSymbolClass();
simpleFillSymbol.Style = FillStyle; IFeatureCursor featureCursor = geoFeatureLayer.FeatureClass.Search(null, false);
IFeature feature; if (featureCursor != null)
{
IEnumColors enumColors = CreateAlgorithmicColorRamp(valueCount).Colors;
int fieldIndex = geoFeatureLayer.FeatureClass.Fields.FindField(RenderField);
for (int i = 0; i < valueCount; i++)
{
feature = featureCursor.NextFeature();
string nameValue = feature.get_Value(fieldIndex).ToString();
simpleFillSymbol = new SimpleFillSymbolClass();
simpleFillSymbol.Color = enumColors.Next();
uniqueValueRenderer.AddValue(nameValue, RenderField, simpleFillSymbol as ISymbol);
}
} geoFeatureLayer.Renderer = uniqueValueRenderer as IFeatureRenderer;
}
/// <summary>
/// 单一值渲染(多字段)
/// </summary>
/// <param name="layerName">图层名</param>
/// <param name="RenderField">多字段名</param>
/// <param name="FillStyle">样式</param>
/// <param name="valueCount">每个字段中唯一值的个数</param>
public void createUniqueValueRander(string layerName, string[] RenderField, esriSimpleFillStyle FillStyle, int[] valueCount)
{
IGeoFeatureLayer geoFeatureLayer;
geoFeatureLayer = getGeoLayer(layerName);
IUniqueValueRenderer uniqueValueRenderer = new UniqueValueRendererClass();
//可以设置多个字段
uniqueValueRenderer.FieldCount = RenderField .Length;//0-3个
for (int i = 0; i < RenderField.Length; i++)
{
uniqueValueRenderer.set_Field(i, RenderField[i]);
} //简单填充符号
ISimpleFillSymbol simpleFillSymbol = new SimpleFillSymbolClass();
simpleFillSymbol.Style = FillStyle; IFeatureCursor featureCursor = geoFeatureLayer.FeatureClass.Search(null, false);
IFeature feature; if (featureCursor != null)
{
for (int i = 0; i < RenderField.Length; i++)
{
IEnumColors enumColors = CreateAlgorithmicColorRamp(valueCount[i]).Colors;
int fieldIndex = geoFeatureLayer.FeatureClass.Fields.FindField(RenderField[i]);
for (int j = 0; j < valueCount[i]; j++)
{
feature = featureCursor.NextFeature();
string nameValue = feature.get_Value(fieldIndex).ToString();
simpleFillSymbol = new SimpleFillSymbolClass();
simpleFillSymbol.Color = enumColors.Next();
uniqueValueRenderer.AddValue(nameValue, RenderField[i], simpleFillSymbol as ISymbol);
}
}
}
geoFeatureLayer.Renderer = uniqueValueRenderer as IFeatureRenderer;
}

四、ProportionalSymbolRenderer专题图

使用梯度着色法制作的专题图。

ProportionalSymbolRenderer实现了IProportionalSymbolRenderer接口。

这种着色法需要用户知道最大和最小点各自代表的字段值、着色基于的字段和着色点使用的符号以及它在Legend要出现的级别数目。

/// <summary>
/// 梯度着色
/// </summary>
/// <param name="layerName">图层名字</param>
/// <param name="ProportionField">要参考的字段</param>
/// <param name="FillStyle">填充样式</param>
/// <param name="fillColor">填充Color</param>
/// <param name="characterMarkerSymbol">特征点符号</param>
/// <param name="units">参考单位</param>
/// <param name="pLegendSymbolCount">要分成的级数</param>
public void createProportionSymbolRender(string layerName, string ProportionField, esriSimpleFillStyle FillStyle, IColor fillColor, ICharacterMarkerSymbol characterMarkerSymbol, esriUnits units, int pLegendSymbolCount)
{
IGeoFeatureLayer geoFeatureLayer;
IFeatureLayer featureLayer;
IProportionalSymbolRenderer proportionalSymbolRenderer;
ITable table;
ICursor cursor;
IDataStatistics dataStatistics;//用一个字段生成统计数据
IStatisticsResults statisticsResult;//报告统计数据
//stdole.IFontDisp fontDisp;//定义字体 geoFeatureLayer = getGeoLayer(layerName);
featureLayer = geoFeatureLayer as IFeatureLayer;
table = geoFeatureLayer as ITable;
cursor = table.Search(null, true);
dataStatistics = new DataStatisticsClass();
dataStatistics.Cursor = cursor;
dataStatistics.Field = ProportionField;//确定分级字段
statisticsResult = dataStatistics.Statistics;
if (statisticsResult != null)
{
IFillSymbol fillSymbol = new SimpleFillSymbolClass();
fillSymbol.Color = fillColor;
//ICharacterMarkerSymbol characterMarkerSymbol = new CharacterMarkerSymbolClass();
//fontDisp = new stdole.StdFontClass() as stdole.IFontDisp;
//fontDisp.Name = "arial";
//fontDisp.Size = 20;
//characterMarkerSymbol.Font = fontDisp;
//characterMarkerSymbol.CharacterIndex = 90;
//characterMarkerSymbol.Color = getRGB(255, 0, 0);
//characterMarkerSymbol.Size = 8;
proportionalSymbolRenderer = new ProportionalSymbolRendererClass();
proportionalSymbolRenderer.ValueUnit = units;
proportionalSymbolRenderer.Field = ProportionField ;
proportionalSymbolRenderer.FlanneryCompensation = false;//分级是不是在TOC中显示legend
proportionalSymbolRenderer.MinDataValue = statisticsResult.Minimum;
proportionalSymbolRenderer.MaxDataValue = statisticsResult.Maximum;
proportionalSymbolRenderer.BackgroundSymbol = fillSymbol;
proportionalSymbolRenderer.MinSymbol = characterMarkerSymbol as ISymbol;
proportionalSymbolRenderer.LegendSymbolCount = pLegendSymbolCount;//要分成的级数
proportionalSymbolRenderer.CreateLegendSymbols();
geoFeatureLayer.Renderer = proportionalSymbolRenderer as IFeatureRenderer;
}
}

五、ChartRenderer专题图

使用一个饼图或柱图来表示一个要素的多个属性。有水平排列和累计排列两种。

ChartRenderer对象实现了IChartRenderer接口,其中ChartSymbol方法用于设置着色对象的着色符号,Label属性用于设置Legend的标签。

该方法用于比较一个要素中不同属性,在获得着色图层的单个或多个字段时用RendererField对象来操作。该类实现了IRendererField接口,可以通过AddField方法来添加字段。

该着色法是使用饼图来表现要素的多个属性之间的比率关系。该对象实现了IPicChartRenderer接口,使用PieChartSymbol符号来修饰要素。

/// <summary>
/// 条状图渲染
/// </summary>
/// <param name="layerName">图层名字</param>
/// <param name="RenderField">要柱状表示的字段</param>
/// <param name="fillsymbolColor">这些字段分别需要渲染的颜色</param>
/// <param name="BarWidth">每个柱子的宽度</param>
/// <param name="BgColor">背景色</param>
public void createBarChartSymbol(string layerName, string[] RenderField, IColor[] fillsymbolColor,double BarWidth,IColor BgColor)
{
IGeoFeatureLayer geoFeatureLayer;
IFeatureLayer featureLayer;
ITable table;
ICursor cursor;
IRowBuffer rowBuffer;
//获取渲染图层
geoFeatureLayer = getGeoLayer(layerName);
featureLayer = geoFeatureLayer as IFeatureLayer;
table = featureLayer as ITable;
geoFeatureLayer.ScaleSymbols = true;
IChartRenderer chartRenderer = new ChartRendererClass();
IRendererFields rendererFields = chartRenderer as IRendererFields;
for (int i = ; i < RenderField.Length; i++)
{
rendererFields.AddField(RenderField[i], RenderField[i]);
} //int[] fieldIndexs = new int[2];
//fieldIndexs[0] = table.FindField(field1);
//fieldIndexs[1] = table.FindField(field2);
//获取要素最大值,决定柱子的最大高度
double fieldValue = 0.0, maxValue = 0.0;
cursor = table.Search(null, true);
rowBuffer = cursor.NextRow();
while (rowBuffer != null)
{
for (int i = ; i < RenderField.Length; i++)
{
int index = table.FindField(RenderField[i]);
fieldValue = double.Parse(rowBuffer.get_Value(index).ToString());
if (fieldValue > maxValue)
{
maxValue = fieldValue;
}
}
rowBuffer = cursor.NextRow();
}
//创建水平排列符号
IBarChartSymbol barChartSymbol = new BarChartSymbolClass();
barChartSymbol.Width = BarWidth;//柱子的边长
IMarkerSymbol markerSymbol = barChartSymbol as IMarkerSymbol;
markerSymbol.Size = ;//这个是?
IChartSymbol chartSymbol = barChartSymbol as IChartSymbol;
chartSymbol.MaxValue = maxValue;
//添加渲染符号
ISymbolArray symbolArray = barChartSymbol as ISymbolArray;
IFillSymbol[] fillsymbol = new IFillSymbol[RenderField.Length];
for (int i = ; i < RenderField.Length; i++)
{
//设置不同颜色的柱子
fillsymbol[i] = new SimpleFillSymbolClass();
fillsymbol[i].Color = fillsymbolColor[i];
symbolArray.AddSymbol(fillsymbol[i] as ISymbol);
//IFillSymbol fillSymbol = new SimpleFillSymbolClass();
//fillSymbol.Color = getRGB(255, 0, 0);//红色柱子
//symbolArray.AddSymbol(fillSymbol as ISymbol);
//fillSymbol = new SimpleFillSymbolClass();
//fillSymbol.Color = getRGB(0, 255, 0);//绿色柱子
//symbolArray.AddSymbol(fillSymbol as ISymbol);
} //设置柱状图符号
chartRenderer.ChartSymbol = barChartSymbol as IChartSymbol;
//设置底图样式
IFillSymbol pFillSymbol = new SimpleFillSymbolClass();
pFillSymbol.Color = BgColor;
chartRenderer.BaseSymbol = pFillSymbol as ISymbol;
chartRenderer.UseOverposter = false;//假如那个位置放不下柱状图,是否用线段连接指示位置
//创建图例
chartRenderer.CreateLegend();
geoFeatureLayer.Renderer = chartRenderer as IFeatureRenderer;
}
/// <summary>
/// 创建累计柱状图表(stacked)
/// </summary>
/// <param name="layerName">Name</param>
/// <param name="RenderField">Fields</param>
/// <param name="fillsymbolColor">every Color</param>
/// <param name="BarWidth">width</param>
/// <param name="BgColor">BackGound Color</param>
public void createStackedChartSymbol(string layerName, string[] RenderField, IColor[] fillsymbolColor, double BarWidth, IColor BgColor)
{
IGeoFeatureLayer geoFeatureLayer;
IFeatureLayer featureLayer;
ITable table;
ICursor cursor;
IRowBuffer rowBuffer;
//获取渲染图层
geoFeatureLayer = getGeoLayer(layerName);
featureLayer = geoFeatureLayer as IFeatureLayer;
table = featureLayer as ITable;
geoFeatureLayer.ScaleSymbols = true;
IChartRenderer chartRenderer = new ChartRendererClass();
IRendererFields rendererFields = chartRenderer as IRendererFields;
for (int i = ; i < RenderField.Length; i++)
{
rendererFields.AddField(RenderField[i], RenderField[i]);
}
//获取要素最大值
double fieldValue = 0.0, maxValue = 0.0;
cursor = table.Search(null, true);
rowBuffer = cursor.NextRow();
while (rowBuffer != null)
{
for (int i = ; i < RenderField.Length ; i++)
{
int index = table.FindField(RenderField[i]);
fieldValue = double.Parse(rowBuffer.get_Value(index).ToString());
if (fieldValue > maxValue)
{
maxValue = fieldValue;
}
}
rowBuffer = cursor.NextRow();
}
//创建累积排列符号
IStackedChartSymbol stackedChartSymbol = new StackedChartSymbolClass(); stackedChartSymbol.Width = ;//柱子宽度
IMarkerSymbol markerSymbol = stackedChartSymbol as IMarkerSymbol;
markerSymbol.Size = ;//下面的大小
IChartSymbol chartSymbol = stackedChartSymbol as IChartSymbol;
chartSymbol.MaxValue = maxValue;
//添加渲染符号
ISymbolArray symbolArray = stackedChartSymbol as ISymbolArray;
IFillSymbol[] fillsymbol = new IFillSymbol[RenderField.Length];
for (int i = ; i < RenderField.Length; i++)
{
//设置不同颜色的柱子
fillsymbol[i] = new SimpleFillSymbolClass();
fillsymbol[i].Color = fillsymbolColor[i];
symbolArray.AddSymbol(fillsymbol[i] as ISymbol);
}
//设置柱状图符号
chartRenderer.ChartSymbol = stackedChartSymbol as IChartSymbol;
IFillSymbol pFillSymbol = new SimpleFillSymbolClass();
pFillSymbol.Color =BgColor;
chartRenderer.BaseSymbol = pFillSymbol as ISymbol;
chartRenderer.UseOverposter = false;
//创建图例
chartRenderer.CreateLegend();
geoFeatureLayer.Renderer = chartRenderer as IFeatureRenderer;
}
/// <summary>
/// 创建饼图
/// </summary>
/// <param name="layerName">name</param>
/// <param name="RenderField">Fields</param>
/// <param name="fillsymbolColor">Each color</param>
/// <param name="BgColor">background Color</param>
public void createPieChartSymbol(string layerName, string[] RenderField, IColor[] fillsymbolColor, IColor BgColor)
{
IGeoFeatureLayer geoFeatureLayer;
IFeatureLayer featureLayer;
ITable table;
ICursor cursor;
IRowBuffer rowBuffer; //获取渲染图层
geoFeatureLayer = getGeoLayer(layerName);
featureLayer = geoFeatureLayer as IFeatureLayer;
table = featureLayer as ITable;
geoFeatureLayer.ScaleSymbols = true;
IChartRenderer chartRenderer = new ChartRendererClass();
IPieChartRenderer pieChartRenderer = chartRenderer as IPieChartRenderer;
IRendererFields rendererFields = chartRenderer as IRendererFields;
for (int i = ; i < RenderField.Length; i++)
{
rendererFields.AddField(RenderField[i], RenderField[i]); }
//获取渲染要素的最大值
double fieldValue = 0.0, maxValue = 0.0;
cursor = table.Search(null, true);
rowBuffer = cursor.NextRow();
while (rowBuffer != null)
{
for (int i = ; i < RenderField.Length ; i++)
{
int index = table.FindField(RenderField[i]);
fieldValue = double.Parse(rowBuffer.get_Value(index).ToString());
if (fieldValue > maxValue)
{
maxValue = fieldValue;
}
}
rowBuffer = cursor.NextRow();
}
//设置饼图符号
IPieChartSymbol pieChartSymbol = new PieChartSymbolClass();
pieChartSymbol.Clockwise = true;
pieChartSymbol.UseOutline = true;
IChartSymbol chartSymbol = pieChartSymbol as IChartSymbol;
chartSymbol.MaxValue = maxValue;
ILineSymbol lineSymbol = new SimpleLineSymbolClass();
lineSymbol.Color = getRGB(, , );
lineSymbol.Width = ;
pieChartSymbol.Outline = lineSymbol;
IMarkerSymbol markerSymbol = pieChartSymbol as IMarkerSymbol;
markerSymbol.Size = ;
//添加渲染符号
ISymbolArray symbolArray = pieChartSymbol as ISymbolArray;
IFillSymbol[] fillsymbol =new IFillSymbol[RenderField.Length];
for (int i = ; i < RenderField.Length; i++)
{
fillsymbol[i] = new SimpleFillSymbolClass();
fillsymbol[i].Color = fillsymbolColor[i];
symbolArray.AddSymbol(fillsymbol[i] as ISymbol);
}
//设置背景
chartRenderer.ChartSymbol = pieChartSymbol as IChartSymbol;
IFillSymbol pFillSymbol = new SimpleFillSymbolClass();
pFillSymbol.Color = BgColor;
chartRenderer.BaseSymbol = pFillSymbol as ISymbol;
chartRenderer.UseOverposter = false;
//创建图例
chartRenderer.CreateLegend();
geoFeatureLayer.Renderer = chartRenderer as IFeatureRenderer;
}

六、DotDensityRenderer专题图

DotDensityRenderer对象使用DotDensityFillSymbol符号对Polygon类型的要素进行着色。该专题图使用随机分布的点的密度来表现要素某个属性值得大小。也可以对图层的多个属性值着色,通过指定不同的点符号来区分。

DotDensityRenderer对象实现IDotDensityRenderer接口,定义了使用点密度着色方法和属性,如DotDensitySymbol用于确定着色点符号,CreateLegend方法用于产生图例。

/// <summary>
/// 点密度
/// </summary>
/// <param name="layerName">图层名字</param>
/// <param name="RenderField">渲染字段</param>
/// <param name="dotDensityFillSymbol">点密度符号</param>
/// <param name="simpleMarkerSymbol">点符号</param>
/// <param name="RenderDensity">点密度</param>
public void createDotDensityFillSymbol(string layerName, string RenderField, IDotDensityFillSymbol dotDensityFillSymbol, ISimpleMarkerSymbol simpleMarkerSymbol,double RenderDensity)
{
IGeoFeatureLayer geoFeatureLayer;
IDotDensityRenderer dotDensityRenderer;
//获取渲染图层
geoFeatureLayer = getGeoLayer(layerName);
dotDensityRenderer = new DotDensityRendererClass();
IRendererFields rendererFields = dotDensityRenderer as IRendererFields;
//设置渲染字段
rendererFields.AddField(RenderField, RenderField); ////设置填充颜色和背景色,直接由参数传入,具体定义参考下面的 例子
//dotDensityFillSymbol = new DotDensityFillSymbolClass();
//dotDensityFillSymbol.DotSize = 3;
//dotDensityFillSymbol.Color = getRGB(255, 0, 0);
//dotDensityFillSymbol.BackgroundColor = getRGB(0, 255, 0); //设置渲染符号
ISymbolArray symbolArray = dotDensityFillSymbol as ISymbolArray;
//点符号样式,也可以参考下面的自己定义
//ISimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbolClass();
//simpleMarkerSymbol.Style = esriSimpleMarkerStyle.esriSMSCircle;
//simpleMarkerSymbol.Size = 2;
//simpleMarkerSymbol.Color = getRGB(0, 0, 255);
symbolArray.AddSymbol(simpleMarkerSymbol as ISymbol);
dotDensityRenderer.DotDensitySymbol = dotDensityFillSymbol;
//设置渲染密度
dotDensityRenderer.DotValue = RenderDensity;
//创建图例
dotDensityRenderer.CreateLegend();
geoFeatureLayer.Renderer = dotDensityRenderer as IFeatureRenderer;
}

此外还有两个补充方法(在调用这些方法的时候能用到):

private IMap pMap;
public Renderer(IMap _pMap)
{
pMap = _pMap;
}
//获取颜色对象
private IRgbColor getRGB(int r, int g, int b)
{
IRgbColor pColor;
pColor = new RgbColorClass();
pColor.Red = r;
pColor.Green = g;
pColor.Blue = b;
return pColor;
}
private IGeoFeatureLayer getGeoLayer(string layerName)
{
ILayer layer;
IGeoFeatureLayer geoFeatureLayer;
for (int i = ; i < this.pMap.LayerCount; i++)
{
layer = this.pMap.get_Layer(i);
if (layer != null && layer.Name == layerName)
{
geoFeatureLayer = layer as IGeoFeatureLayer;
return geoFeatureLayer;
}
}
return null;
}

[转] ArcEngine 产生专题图的更多相关文章

  1. 用ARCGIS配出一张DEM专题图

    专题图是指突出而尽可能完善.详尽地表达制图区内的一种或几种自然或社会经济要素的地图.专题图的制图领域宽广,凡具有空间属性的信息数据都可以用其来表示.由于DEM描述的是地面高程信息,它在测绘.水文.气象 ...

  2. ae专题图

    点密度图.分层设色图/等级图.单值图.柱状图.饼状图的实现代码 C# private void 点密度图ToolStripMenuItem_Click(object sender, EventArgs ...

  3. arcgis人口专题图

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  4. arcengine 开发经典帖

    http://bbs.esrichina-bj.cn/ESRI/viewthread.php?tid=25575&page=1&extra= 使用ArcGIS Engine 开发自定义 ...

  5. arcengine 开发经典帖 【强烈推荐仔细研读】

    转自原文 arcengine 开发经典帖 使用ArcGIS Engine 开发自定义GIS应用: 第一部分:使用ArcGIS Engine 发布自定义GIS应用软件-全面了解ArcGIS Engine ...

  6. arcpy.mapping实战-专题图制图自动化

    arcpy.mapping实战-专题图制图自动化 by 李远祥 最初对arcpy.mapping感兴趣是因为一次大规模的专题地图调整的需要,由于某某单位利用ArcEngine编写的专题图出图系统,出现 ...

  7. 全球PM25实时可视化

    星期一的早上,我在办公区鸟瞰窗外,目光所到之处,用顾城的那首"你看天时很近,看我时很远"倒是格外的应景.作为一名父亲,看着工位上3M的口罩,想想此刻还在熟睡的孩子,多少有些无奈-- ...

  8. ArcGIS Engine开发前基础知识(1)

    ArcGIS二次开发是当前gis领域的一项重要必不可少的技能.下面介绍它的基本功能 一.ArcGIS Engine功能 在使用之前首先安装和部署arcgis sdk,(在这里不在赘述相关知识)可以实现 ...

  9. 利用Bootstrap快速搭建个人响应式主页(附演示+源码)

    1.前言 我们每个程序员都渴望搭建自己的技术博客平台与他人进行交流分享,但使用别人的博客模板没有创意.做网站后台的开发人员可能了解前端,可是自己写一个不错的前端还是很费事的.幸好我们有Bootstra ...

随机推荐

  1. 【面试题030】最小的k个数

    [面试题030]最小的k个数 题目:     输入n个整数,找出其中最小的k个数.     例如输入4.5.1.6.2.7.3.8这8个字,则其中最小的4个数字是1.2.3.4.     思路一:   ...

  2. PHP中发送邮件的几种方法总结

    1. 使用 mail() 函数 没什么好讲的,就是使用系统自带的smtp系统来发送,一般是使用sendmail来发.这个按照各个系统不同而定.使用参考手册. 2. 使用管道的形式 昨天刚测试成功,使用 ...

  3. 手动挂载安装VMware tools

    在VMware 10上装了Red Hat Enterprise Linux 4后,点击“安装VMware tools”后,虚拟机桌面一直不出现挂载了VMware tools的虚拟光驱.在/mnt 和/ ...

  4. Filter(过滤器)常见应用

    孤傲苍狼 只为成功找方法,不为失败找借口! javaweb学习总结(四十六)——Filter(过滤器)常见应用 一.统一全站字符编码 通过配置参数charset指明使用何种字符编码,以处理Html F ...

  5. 创业草堂之六:CEO的财务自修课

    创业团队中一个最普遍的缺陷,是团队--尤其是团队的核心人物CEO,缺乏基本的财务知识和技能.一个不懂财务知识的CEO,即使业务能力再强,在投资人的眼里,他/她依然是一个笨拙的CEO.粗糙的CEO.鲁莽 ...

  6. java:定义线程

    Thread是java.lang包的类,默认导入. 进程:操作系统中的程序,多进程即同时运行多个程序.线程:程序中的流,多线程即程序中有多个流同时执行. 一个线程用一个线程对象表示 创建线程的方法: ...

  7. jQuery好用插件

    jQuery图片轮播插件(smallslider):http://fz.sjtu.edu.cn/zsw/js/smallslider/ jQuery消息通知(noty):http://www.360d ...

  8. hadoop拾遗(三)---- 多种输入

    虽然一个MapReduce作业的输入可能包含多个输入文件(由文件glob.过滤器和路径组成),但所有文件都由同一个InputFormat和同一个Mapper来解释.然而,数据格式往往会随时间而演变,所 ...

  9. maven小项目注册服务(一)--email和persist模块

    跟着书里的讲解,跟着做了一遍该项目: 首先明白注册账户的需求: 账号的lD和Email地址都可以用来唯一地标识某个用户,而显示名称则用来显示在页面下,方便浏览.注册的时候用户还需要输入两次密码,以确保 ...

  10. Struts2的简单案例

    第一步:首先下载struts2的架包(链接地址:http://download.csdn.net/detail/ahy1024/4626028) 第二步:新建web project项目 DemoStr ...