因为爱GIS,我们聚集于此
  • 快捷登录:
查看: 606|回复: 3
收起左侧

[提问求助] ArcEngine+C#关于属性查询的问题

[复制链接]

该用户从未签到

发表于 2015-5-17 15:28:35 | 显示全部楼层 |阅读模式

有你,GIS才会更精彩,马上注册,我们一起学GIS。

您需要 登录 才可以下载或查看,没有帐号?立即注册 用百度帐号登录

x


图层属性表中的字段,属性和相应的GB码必须正确对应,例如:属性=“绿化”时,GB码=99300;属性=“建筑”时,GB码=33010,要怎么编一段C#代码查询出GB码错误的项?

该用户从未签到

发表于 2017-1-8 21:46:16 | 显示全部楼层
写了一个add-in小插件,希望能帮到楼主[img]C:\Users\Administrator\Desktop\ZG1$%)%5B5%5D7M~L[U3@BZ])ZR.png[/img]

该用户从未签到

发表于 2017-1-8 22:00:15 | 显示全部楼层
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Geodatabase;

namespace GPma
{
    public class Button1 : ESRI.ArcGIS.Desktop.AddIns.Button
    {
        public Button1()
        {
        }

        protected override void OnClick()
        {
            //
            //  TODO: Sample code showing how to access button host
            //
            ArcMap.Application.CurrentTool = null;
            IMap pmap = ArcMap.Document.FocusMap;
            IActiveView pacview = pmap as IActiveView;
            IFeatureLayer pfeaturelayer = pmap.get_Layer(0) as IFeatureLayer;
            IFeatureCursor pfeaturecursor = pfeaturelayer.FeatureClass.Search(null, false);
            IFeature pfeature = pfeaturecursor.NextFeature();      
            Dictionary<string, string> pdictionary = new Dictionary<string, string>();
            pdictionary.Add("建筑", "33010");
            pdictionary.Add("绿化", "99300");
            pdictionary.Add("体育场馆", "95140");
            IQueryFilter queryfilter = new QueryFilterClass();
            IFeatureSelection pfselection = pfeaturelayer as IFeatureSelection;
            while (pfeature != null)
            {
                int index1 = pfeaturelayer.FeatureClass.Fields.FindField("属性");
                int index2 = pfeaturelayer.FeatureClass.Fields.FindField("GB码");
                if (pdictionary.ContainsKey(pfeature.get_Value(index1).ToString())==true)
                {
                    if (pfeature.get_Value(index2).ToString() != pdictionary[pfeature.get_Value(index1).ToString()])
                    {   
                        pmap.SelectFeature(pfeaturelayer as ILayer, pfeature);
                    }
                }               
                pfeature = pfeaturecursor.NextFeature();
            }
            pacview.Refresh();
        }
        protected override void OnUpdate()
        {
            Enabled = ArcMap.Application != null;
        }
    }

}
您需要登录后才可以回帖 登录 | 立即注册 用百度帐号登录

本版积分规则

关闭

热门推荐上一条 /1 下一条

© 2013-2014 GIS520 ( 陕ICP备14003560号-1 )Powered by Discuz! X3.2 Template by giscafer   
快速回复 返回顶部 返回列表