地图 唯一值渲染

 

ContractedBlock.gif ExpandedBlockStart.gif 唯一值渲染
/// <summary>
        
/// 唯一值渲染
        
/// </summary>
        
/// <param name="pFeaturelayer">渲染图层</param>
        
/// <param name="sRenderField">渲染字段</param>
        
/// <param name="pQueryFilter">渲染过滤器</param>
        public static IUniqueValueRenderer FunUniqueValueRender(IFeatureLayer pFeaturelayer, string sRenderField, IQueryFilter pQueryFilter)
        {
            
try
            {
                IFeatureClass pFeatureClass 
= null;
                IRandomColorRamp pRandomColorRamp 
= null;
                IUniqueValueRenderer pUniqueValueRenderer 
= null;
                IFeatureCursor pFeatureCursor 
= null;
                
int iRenderFiledIndex;
                
int iCount;

                
if (pQueryFilter == null)
                    pQueryFilter 
= new QueryFilterClass();

                
//获取渲染字段
                pFeatureClass = pFeaturelayer.FeatureClass;
                iRenderFiledIndex 
= FunGetFiledIndexByName(pFeatureClass, sRenderField);//返回渲染字段所在的索引值
                if (iRenderFiledIndex == -1)
                {
                    MessageBox.Show(
"字段索引读取错误");
                    
return null;
                }

                
//获取渲染字段的唯一值个数
                iCount = pFeatureClass.FeatureCount(pQueryFilter);
                
if (iCount < 1)
                {
                    MessageBox.Show(
"计算字段唯一值个数发生错误");
                    
return null;
                }
                
//创建并得到IRandomColorRamp 
                pRandomColorRamp = new RandomColorRampClass();

                pRandomColorRamp.StartHue 
= 0;
                pRandomColorRamp.MinValue 
= 99;
                pRandomColorRamp.MinSaturation 
= 15;
                pRandomColorRamp.EndHue 
= 360;
                pRandomColorRamp.MaxValue 
= 100;
                pRandomColorRamp.MaxSaturation 
= 30;
                pRandomColorRamp.Size 
= iCount;
                
bool ok;
                pRandomColorRamp.CreateRamp(
out ok);


                
//设置UniqueValueRenderer
                pUniqueValueRenderer = new UniqueValueRendererClass();
                pUniqueValueRenderer.FieldCount 
= 1;
                pUniqueValueRenderer.set_Field(
0, sRenderField);

                
//遍历所有要素,并添加渲染值
                pFeatureCursor = pFeatureClass.Search(pQueryFilter, true);
                IEnumColors pEnumColors 
= pRandomColorRamp.Colors;
                pEnumColors.Reset();
                IColor pColor;
                IFeature pFeature;
                
string sValue;
                
for (int index = 0; index < iCount; index++)
                {
                    pColor 
= pEnumColors.Next();
                    pFeature 
= pFeatureCursor.NextFeature();
                    sValue 
= Convert.ToString(pFeature.get_Value(iRenderFiledIndex));
                    
bool isHad = false;
                    
for (int i = 0; i < pUniqueValueRenderer.ValueCount; i++)
                    {
                        
if (sValue == pUniqueValueRenderer.get_Value(i).ToString())
                        {
                            isHad 
= true;
                            
break;
                        }
                    }
                    
if (!isHad)
                    {
                        
if (pFeatureClass.ShapeType == esriGeometryType.esriGeometryPolygon)
                        {
                            ISimpleFillSymbol pSimpleFillSymbol 
= new SimpleFillSymbolClass();
                            pSimpleFillSymbol.Style 
= esriSimpleFillStyle.esriSFSSolid;
                            pSimpleFillSymbol.Color 
= pColor;
                            pUniqueValueRenderer.AddValue(sValue, sValue, (ISymbol)pSimpleFillSymbol);
                        }
                        
else if (pFeatureClass.ShapeType == esriGeometryType.esriGeometryPoint)
                        {
                            ISimpleMarkerSymbol pSimpleMarkerSymbol 
= new SimpleMarkerSymbolClass();
                            pSimpleMarkerSymbol.Style 
= esriSimpleMarkerStyle.esriSMSCircle;
                            pSimpleMarkerSymbol.Color 
= pColor;
                            pSimpleMarkerSymbol.Size 
= 6;
                            pUniqueValueRenderer.AddValue(sValue, sValue, (ISymbol)pSimpleMarkerSymbol);
                        }
                    }
                }

                
//释放变量
                pFeatureCursor = null;
                pRandomColorRamp 
= null;
                pFeatureClass 
= null;

                
return pUniqueValueRenderer;

            }
            
catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                
return null;
            }
        }

 

转载于:https://www.cnblogs.com/JinDin/archive/2008/08/28/1278933.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值