您的位置:首页 > 汽车 > 新车 > ArcGIS Pro SDK (七)编辑 6 检查器

ArcGIS Pro SDK (七)编辑 6 检查器

2024/7/7 6:57:33 来源:https://blog.csdn.net/szy13323042191/article/details/140093332  浏览:    关键词:ArcGIS Pro SDK (七)编辑 6 检查器

ArcGIS Pro SDK (七)编辑 6 检查器

目录

  • ArcGIS Pro SDK (七)编辑 6 检查器
    • 1 将要素从图层加载到检查器中
    • 2 将地图选择加载到检查器中
    • 3 获取所选要素的属性值
    • 4 将地图选择加载到检查器并更改属性
    • 5 使用检查器获取图层方案
    • 6 添加验证

环境:Visual Studio 2022 + .NET6 + ArcGIS Pro SDK 3.0

1 将要素从图层加载到检查器中

// 获取地图中的第一个要素图层
var firstFeatureLayer = ArcGIS.Desktop.Mapping.MapView.Active.Map.GetLayersAsFlattenedList().OfType<ArcGIS.Desktop.Mapping.FeatureLayer>().FirstOrDefault();// 创建Inspector类的实例
var inspector = new ArcGIS.Desktop.Editing.Attributes.Inspector();
// 将具有ObjectID 'oid' 的要素加载到Inspector中
await inspector.LoadAsync(firstFeatureLayer, oid);

2 将地图选择加载到检查器中

// 获取地图中当前选择的要素
var selectedFeatures = ArcGIS.Desktop.Mapping.MapView.Active.Map.GetSelection();
// 获取第一个图层及其对应的选择要素的OID列表
var firstSelectionSet = selectedFeatures.ToDictionary().First();// 创建Inspector类的实例
var inspector = new ArcGIS.Desktop.Editing.Attributes.Inspector();
// 使用对象ID列表将选定的要素加载到Inspector中
await inspector.LoadAsync(firstSelectionSet.Key, firstSelectionSet.Value);

3 获取所选要素的属性值

QueuedTask.Run(() =>{// 获取地图中当前选择的要素var selectedFeatures = ArcGIS.Desktop.Mapping.MapView.Active.Map.GetSelection();// 获取第一个图层及其对应的选择要素的OID列表var firstSelectionSet = selectedFeatures.ToDictionary().First();// 创建Inspector类的实例var inspector = new ArcGIS.Desktop.Editing.Attributes.Inspector();// 使用对象ID列表将选定的要素加载到Inspector中inspector.Load(firstSelectionSet.Key, firstSelectionSet.Value);// 获取属性值var pscode = inspector["STATE_NAME"];var myGeometry = inspector.Shape;});

4 将地图选择加载到检查器并更改属性

// 获取地图中当前选择的要素
var selectedFeatures = ArcGIS.Desktop.Mapping.MapView.Active.Map.GetSelection();
// 获取第一个图层及其对应的选择要素的OID列表
var firstSelectionSet = selectedFeatures.ToDictionary().First();// 创建Inspector类的实例
var inspector = new ArcGIS.Desktop.Editing.Attributes.Inspector();
// 使用对象ID列表将选定的要素加载到Inspector中
await inspector.LoadAsync(firstSelectionSet.Key, firstSelectionSet.Value);// 为字段 "Description" 分配新的属性值
// 如果加载了多个要素,更改将应用于所有要素
inspector["Description"] = "The new value.";
// 作为编辑操作应用更改 - 但没有撤销/重做
await inspector.ApplyAsync();

5 使用检查器获取图层方案

QueuedTask.Run(() =>{var firstFeatureLayer = MapView.Active.Map.GetLayersAsFlattenedList().OfType<ArcGIS.Desktop.Mapping.FeatureLayer>().FirstOrDefault();// 创建Inspector类的实例var inspector = new ArcGIS.Desktop.Editing.Attributes.Inspector();// 加载图层inspector.LoadSchema(firstFeatureLayer);// 迭代属性,查看属性foreach (var attribute in inspector){var fldName = attribute.FieldName;var fldAlias = attribute.FieldAlias;var fldType = attribute.FieldType;int idxFld = attribute.FieldIndex;var fld = attribute.GetField();var isNullable = attribute.IsNullable;var isEditable = attribute.IsEditable;var isVisible = attribute.IsVisible;var isSystemField = attribute.IsSystemField;var isGeometryField = attribute.IsGeometryField;}});

6 添加验证

var insp = new Inspector();
insp.LoadSchema(featLayer);
var attrib = insp.Where(a => a.FieldName == "Mineral").First();attrib.AddValidate(() =>{if (attrib.CurrentValue.ToString() == "Salt")return Enumerable.Empty<ArcGIS.Desktop.Editing.Attributes.Attribute.ValidationError>();else return new[] { ArcGIS.Desktop.Editing.Attributes.Attribute.ValidationError.Create("Error", ArcGIS.Desktop.Editing.Attributes.Severity.Low) };});

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com