用C#开发ArcGIS,现在有一个layer加载到axmapControl中,如图,我想用C#实现对每个区喷绘不同的颜色,这个怎么实现?我是用FeatureLayer加载的这个shp文件。
/// <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;
}
试试这个?
到这个手塌论坛困橡看看,ae+C#的demo还挺多的毕尺圆
www.gis520.com
渲染,渲染,就相当于 arcmap 中的右键属性中的渲染