AE+c#开发之计算属性字段中所有出现过的独立值

实现方法

1.采用最基本的遍历判别方法

代码如下:

全局变量:

        ArrayList ValueArrayList= new ArrayList () ;     //存放字段值     
        ArrayList ShapefileArrayList = new ArrayList();  //存放矢量图层
        bool isIn=false ;   //判断字段值是否在ValueArrayList数组中

ValueArrayList开始是空的,遍历属性所有值,逐一判别是否存在于其中,不在就添加进去,在的话就不添加,直至全部遍历完成。

(string field)为所遍历的字段名称,比较值的时候转化为string来比较。

 private void GetUniqueValue(IFeatureClass pFeatureClass,string field)
        {
            
            IFeatureCursor pFeatureCursor;
            IQueryFilter pFilter = new QueryFilterClass();

            pFilter.WhereClause = null;

            pFeatureCursor = pFeatureClass.Search(pFilter, false);

            IFeature pFeature = pFeatureCursor.NextFeature();
            int indexofField = pFeatureCursor.FindField(field);
            ValueArrayList.Add(pFeature.get_Value (indexofField).ToString ());
            while (pFeature != null)
            {
                string FieldValue = pFeature.get_Value(indexofField).ToString ();
                
                FieldIsIn(ValueArrayList,FieldValue);
                if (isIn == true)
                {
                    ValueArrayList.Add(FieldValue);
                }
                pFeature = pFeatureCursor.NextFeature();
            }
        }

判断当前属性值(string fid)是否在ArrayList fids数组中,在就返回false,否则返回true

 private void FieldIsIn(ArrayList fids, string fid)
        {
            foreach (object str in fids)
            {
                if (str.ToString().CompareTo(fid) == 0)
                {
                    isIn = false;
                    break;
                }
                else
                    isIn = true;
           }

        }

缺点

遍历方法效率比较低下,特别是字段属性数量多了之后会比较慢。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

空中旋转篮球

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值