在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("字段值更新完成!");
                }
            });
        }三、调试
点击调试或安装工具后,先点击要编辑的要素图层,再点击自定义的【属性编辑】按钮。

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

四、工程文件分享
最后,放上工程文件的链接:
AttributeEdit https://pan.baidu.com/s/15qvlIea7LEQhAS_SFIpPow?pwd=c9k6PS:可以直接点击文件夹bin\Debug\net6.0-windows\下的.esriAddinX文件直接安装。
https://pan.baidu.com/s/15qvlIea7LEQhAS_SFIpPow?pwd=c9k6PS:可以直接点击文件夹bin\Debug\net6.0-windows\下的.esriAddinX文件直接安装。



















