【ArcGIS Pro二次开发】(10):属性表字段(field)的修改

在ArcGIS Pro中,经常会遇到用字段计算器对要素的属性表进行计算。下面以一个例子演示如何在ArcGIS Pro SDK二次开发中实现。


一、要实现的功能

如上图所示的要素图层,要实现如下功能:

当字段【市级行政区】的值为【泉州市】时,将字段【省级行政区】的值修改为【标记结果】。


二、功能代码

1、获取要素图层,这里按选定获取,鼠标选定即可:

var featureLayer = MapView.Active.GetSelectedLayers().FirstOrDefault() as FeatureLayer;

2、打开要素图层的表格:

var table = featureLayer.GetTable();

3、按筛选条件筛选行,并搜索到所在的游标:

var queryFilter = new QueryFilter();
queryFilter.WhereClause = "市级行政区 = '泉州市'";
var tableCursor = table.Search(queryFilter, false)

4、最后给选定的目标赋值即可:

while (tableCursor.MoveNext())
      {
           row["省级行政区"] = "标记结果";
           row.Store();
      }

以上就是功能实现的核心代码,整理一下,完整代码如下:

        protected override async void OnClick()
        {
            // 要更新的字段名和字段值
            var fieldName = "省级行政区";
            var newValue = "标记结果";
            // 获取选定的要素图层
            var featureLayer = MapView.Active.GetSelectedLayers().FirstOrDefault() as FeatureLayer;
            // 使用异步任务在后台进行编辑操作
            await QueuedTask.Run(() =>
            {
                // 如果没有选择要素图层,则返回消息框提醒
                if (featureLayer == null)
                {
                    MessageBox.Show("请选择一个要素图层!");
                    return;
                }
                // 打开要素图层的表格
                var table = featureLayer.GetTable();
                // 设定筛选语句
                var queryFilter = new QueryFilter();
                queryFilter.WhereClause = "市级行政区 = '泉州市'";
                // 定位到属性表的游标
                using (var tableCursor = table.Search(queryFilter, false))
                {
                    while (tableCursor.MoveNext())
                    {
                        // 获取当前记录的值
                        var row = tableCursor.Current;
                        var currentValue = row[fieldName];

                        // 如果当前值不等于新值,则更新该字段的值
                        if (currentValue.ToString() != newValue)
                        {
                            row[fieldName] = newValue;
                            row.Store();
                        }
                    }
                    MessageBox.Show("字段值更新完成!");
                }
            });
        }

三、调试

点击调试或安装工具后,先点击要编辑的要素图层,再点击自定义的【属性编辑】按钮。

生成结果如下,和预期的一致:


四、工程文件分享

最后,放上工程文件的链接:

AttributeEditicon-default.png?t=N176https://pan.baidu.com/s/15qvlIea7LEQhAS_SFIpPow?pwd=c9k6PS:可以直接点击文件夹bin\Debug\net6.0-windows\下的.esriAddinX文件直接安装。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

规划GIS会

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

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

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

打赏作者

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

抵扣说明:

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

余额充值