Arcgis pro SDK 属性表增加字段
arcgis pro SDK 属性表增加字段,需要用到Geoprocessing.ExecuteToolAsync接口,需要注意 var gpResult = await Geoprocessing.ExecuteToolAsync("Management.AddField", parameters);中parameters的构造,有三个必要参数,分别为输入表、字段名、字段类型。
其中输入表是指 要添加指定字段的输入表。 字段将被添加到现有输入表,并且不会创建新的输出表。可将字段添加到地理数据库中的要素类、shapefile、coverage、独立表、栅格目录、带属性表的栅格和图层。类型为:Mosaic Layer; Raster Layer; Table View
var parameters = Geoprocessing.MakeValueArray(new object[] { layer, "newField", "LONG" }); 第一参数用了layer.GetTable(),会导致插入失败,所以改为指定图层。
await QueuedTask.Run(async() => { // 获取当前地图视图(焦点地图和选中的图层) MapView mapView = MapView.Active; // 获取地图视图的关联地图 var map = mapView.Map; // 获取当前选择的图层 var layer = mapView.GetSelectedLayers().FirstOrDefault() as FeatureLayer; // 确保当前选择的图层不为空且为要素图层 if (layer != null && layer is FeatureLayer featureLayer) { //要素类 var featureClass = layer.GetFeatureClass(); // 获取要素数量 var featureCount = featureClass.GetCount(null); // 获取存储几何信息的字段名称 var shapeField = featureClass.GetDefinition().GetShapeField(); // 获取要素类的字段定义 var def = featureClass.GetDefinition(); // 获取字段列表 var fields = def.GetFields();// 如果不存在名为“newField”的字段,则添加该字段 if (def.FindField("newField") == -1) { try { var parameters = Geoprocessing.MakeValueArray(new object[] { layer, "newField", "LONG" }); // 执行工具,并获取结果 var gpResult = await Geoprocessing.ExecuteToolAsync("Management.AddField", parameters); // 检查工具是否执行成功,并输出消息到控制台 if (gpResult.IsFailed == true) { var messages = gpResult.Messages.Select(m => m.Text); var errorMessage = string.Join(Environment.NewLine, messages); MessageBox.Show($"Failed to add field:{Environment.NewLine}{errorMessage}", "ERROR"); } else { MessageBox.Show($"Field 'newField' added successfully to '{layer}' layer.", "SUCCESS"); } } catch (Exception ex) { // 记录异常并输出错误消息到控制台 Console.Error.WriteLine($"Error occurred while executing AddField tool: {ex.Message}"); } } } });

浙公网安备 33010602011771号