使用BeginAccess,EndAccess方法查找图元

   #region  查找图元方法 [例如查找城市] //快速///此方法要根据图层字段的NAME的位置改变索引
      /// <summary>
        /// 查找图元方法 [例如查找城市] 
        ///快速
        ///此方法要根据图层字段的NAME的位置改变索引
      /// </summary>
      /// <param name="lyr_name">图层名</param>
      /// <param name="name">图元名</param>
        public void Method_Find_Feature_Ex(string lyr_name, string name)
        {            
            MapXLib.Layer lyr = map.Layers.Item(lyr_name);
            lyr.BeginAccess(MapXLib.LayerBeginAccessConstants.miAccessRead);//大大减少CPU的开销
            MapXLib.FindFeature FoundFeature = null;
            MapXLib.Find FindObj = lyr.Find;
            FindObj.FindDataset = map.Datasets.Item(lyr_name + "DataSet");
            FindObj.FindField = map.Datasets.Item(lyr_name + "DataSet").Fields.Item(1);//名字字段的索引为1,在数据集为lyr_name + "DataSet"中检索字段名(其名字的索引为1)
            FoundFeature = FindObj.Search(name,Type.Missing);
            lyr.EndAccess(MapXLib.LayerEndAccessConstants.miAccessEnd);
            MessageBox.Show((FoundFeature.FindRC % 10).ToString() + "\n" + (FoundFeature.FindRC).ToString());
            if (FoundFeature.FindRC % 10 == 1)
            {
                map.CenterX = FoundFeature.CenterX;
                map.CenterY = FoundFeature.CenterY;
            }
            else
            {
                MessageBox.Show("该图层没有该图元");
            }
        }

        #endregion

这种的思路是:

1.使用了BeginAccess方法,该方法最大的好处就是减少了CPU的开销,也更能快速的查找到图元,(该方法注意的一点是每个BeginAccess方法配对一个EndAccess,

而且只能运行一组BeginAccess,EndAccess方法),

2.在DataSets集合中找到要相应的DataSet对象(其为要查找的图元所在的图层的数据表),接着在该数据表中找到地域名所在表的字段

3.然后查找地域

4.通过Find对象返回FindRC属性,其包含着数值结果码,当在个位为1时,其为已精确定位,故此设置地域的中心点


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值