唯一值获取

ArcEngine 唯一值获取

问题:
唯一值无法获取

1、命名空间

using System.Collections.Generic;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Geodatabase;
using System.Collections;

2、获取唯一值

官网示例:

    //IDataStatistics Example
    public void IDataStatistics_Example(IFeatureClass featureClass)
    {
        ICursor cursor = (ICursor)featureClass.Search(null, false);
        IDataStatistics dataStatistics = new DataStatisticsClass();
        dataStatistics.Field = "PIP_SIZE";
        dataStatistics.Cursor = cursor;
        System.Collections.IEnumerator enumerator = dataStatistics.UniqueValues;
        enumerator.Reset();
        while (enumerator.MoveNext())
        {
            object myObject = enumerator.Current;
            Console.WriteLine("Value - {0}", myObject.ToString());
        }
        cursor = (ICursor)featureClass.Search(null, false);
        dataStatistics.Cursor = cursor;
        ESRI.ArcGIS.esriSystem.IStatisticsResults statisticsResults = dataStatistics.Statistics;
        Console.WriteLine("mean value - {0}", statisticsResults.Mean);
    }

文明改造示例:

public static IList<string> GetUniqueValue(ILayer Layer,string field) 
{
	//存储唯一值字段
	IList<string> listValues = new List<string>();
	ICursor cursor = layer.FeatureClass.Search(null, false) as ICursor;
	//获取唯一值
	IDataStatistics dataStatistics = new DataStatisticsClass
	{
	    //统计字段
	    Field = field,
	    Cursor = cursor
	};
	//获取唯一值枚举
	IEnumerator enumerator = dataStatistics.UniqueValues;
	if (dataStatistics.UniqueValueCount==0)
	    return listValues ;
	enumerator.Reset();
	while (enumerator.MoveNext())
	{
	    //获取唯一值字段
	    listValues.Add(enumerator.Current.ToString());
	}
	return listValues ;
}

3、获取唯一值失败

1】无数据
2】数据存在空
3】字段不存在
添加一下判断,对数据进行判断

public static IList<string> GetUniqueValue(ILayer Layer,string field) 
{
	IList<string> listValues = new List<string>();
	//判断字段是否存在
	 if (flayer.FeatureClass.FindField(field)==-1)
	   return listValues ;
	//去除字段为NULL字段
	IQueryFilter queryFilter = new QueryFilterClass();
	queryFilter.WhereClause = field + " IS  NOT NULL";
	ICursor cursor = flayer.FeatureClass.Search(queryFilter , false) as ICursor;
	//获取唯一值
	IDataStatistics dataStatistics = new DataStatisticsClass
	{
	    //统计字段
	    Field = field,
	    Cursor = cursor
	};
	//获取唯一值枚举
	System.Collections.IEnumerator enumerator = dataStatistics.UniqueValues;
	if (dataStatistics.UniqueValueCount==0)
	    return listValues ;
	
	enumerator.Reset();
	while (enumerator.MoveNext())
	{
	    //获取唯一值字段
	    listValues.Add(enumerator.Current.ToString());
	}
	return listValues ;
}

声明

1)文章来源于项目实践,文章存在任何问题请留言,感谢您的阅读!
2)原创文章,转载请标注来源
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值