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

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


一、要实现的功能

【ArcGIS Pro二次开发】(10):属性表字段(field)的修改_第1张图片

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

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


二、功能代码

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("字段值更新完成!");
                }
            });
        }

三、调试

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

【ArcGIS Pro二次开发】(10):属性表字段(field)的修改_第2张图片

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

【ArcGIS Pro二次开发】(10):属性表字段(field)的修改_第3张图片


四、工程文件分享

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

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

你可能感兴趣的:(ArcGIS,Pro,SDK,ArcGIS,arcgis,c#,visual,studio)