zoukankan      html  css  js  c++  java
  • ArcGIS Pro二次开发-添加字段

    using System;
    using System.Collections.Generic;
    using System.Linq;
    //using System.Windows;
    //using System.Windows.Forms;
    
    
    using System;
    
    using System.Collections.Generic;
    
    using System.Linq;
    
    using System.Text;
    
    using System.Threading;
    
    using System.Threading.Tasks;
    
    using ArcGIS.Desktop.Core.Geoprocessing;
    
    using ArcGIS.Desktop.Framework;
    
    using ArcGIS.Desktop.Framework.Contracts;
    
    using ArcGIS.Desktop.Framework.Dialogs;
    
    using ArcGIS.Desktop.Mapping;
    
    namespace ProAppModule1
    {
        internal class Button1 : ArcGIS.Desktop.Framework.Contracts.Button
        {
            string AddFieldName = "gisoracle";
            protected override async void OnClick()
    
            {
    
                try
    
                {
    
                    BasicFeatureLayer layer = null;
    
                    await ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run(() =>
    
                    {
    
                        //find selected layer
    
                        if (MapView.Active.GetSelectedLayers().Count == 0)
    
                        {
    
                            MessageBox.Show("Select a feature class from the Content 'Table of Content' first.");
    
                            return;
    
                        }
    
                        layer = MapView.Active.GetSelectedLayers()[0] as BasicFeatureLayer;
    
    
    
                    });
    
                    if (layer == null)
    
                        MessageBox.Show("Unable to find a feature class at the first layer of the active map");
    
                    else
    
                    {
    
                        var dataSource = await GetDataSource(layer);
    
                        MessageBox.Show($@"{dataSource} was found ... adding a new Field");
    
                        await
    
                            ExecuteAddFieldTool(layer, new KeyValuePair<string, string>(AddFieldName, AddFieldName), "Text", 50);
    
                    }
    
                }
    
                catch (Exception ex)
    
                {
    
                    MessageBox.Show(ex.ToString());
    
                }
    
            }
    
            private async Task<string> GetDataSource(BasicFeatureLayer theLayer)
    
            {
    
                try
    
                {
    
                    return await ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run(() =>
    
                    {
    
                        var inTable = theLayer.Name;
    
                        var table = theLayer.GetTable();
    
                        var dataStore = table.GetDatastore();
    
                        var workspaceNameDef = dataStore.GetConnectionString();
    
                        var workspaceName = workspaceNameDef.Split('=')[1];
    
    
    
                        var fullSpec = System.IO.Path.Combine(workspaceName, inTable);
    
                        return fullSpec;
    
                    });
    
                }
    
                catch (Exception ex)
    
                {
    
                    MessageBox.Show(ex.ToString());
    
                    return string.Empty;
    
                }
    
            }
    
    
    
            private async Task<bool> ExecuteAddFieldTool(BasicFeatureLayer theLayer, KeyValuePair<string, string> field, string fieldType, int? fieldLength = null, bool isNullable = true)
    
            {
    
                try
    
                {
    
                    return await ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run(() =>
    
                    {
    
                        var inTable = theLayer.Name;
    
                        var table = theLayer.GetTable();
    
                        var dataStore = table.GetDatastore();
    
                        var workspaceNameDef = dataStore.GetConnectionString();
    
                        var workspaceName = workspaceNameDef.Split('=')[1];
    
    
    
                        var fullSpec = System.IO.Path.Combine(workspaceName, inTable);
    
                        System.Diagnostics.Debug.WriteLine($@"Add {field.Key} from {fullSpec}");
    
    
    
                        var parameters = Geoprocessing.MakeValueArray(fullSpec, field.Key, fieldType.ToUpper(), null, null,
    
                            fieldLength, field.Value, isNullable ? "NULABLE" : "NON_NULLABLE");
    
                        var cts = new CancellationTokenSource();
    
                        var results = Geoprocessing.ExecuteToolAsync("management.AddField", parameters, null, cts.Token,
    
                            (eventName, o) =>
    
                            {
    
                                System.Diagnostics.Debug.WriteLine($@"GP event: {eventName}");
    
                            });
    
                        return true;
    
                    });
    
                }
    
                catch (Exception ex)
    
                {
    
                    MessageBox.Show(ex.ToString());
    
                    return false;
    
                }
    
            }
    
    
    
        }
    
    }
  • 相关阅读:
    Ubuntu系统Anaconda安装Pytorch,教你如何优雅的安装环境(1-5)
    优雅的装系统------安装MacOS 10.13.5系统教程
    关闭Ubuntu系统更新方法
    毫秒钟搞定anaconda环境使用清华镜像安装OpenCV,教你如何优雅的安装环境(1-4)
    Ubuntu16.04安装Anaconda3并配置国内镜像,教你优雅的安装环境(1-3)
    Anaconda常用命令
    Ubuntu16.04安装CUDA10.2+cuDNN7.6.5(福利区),教你如何优雅的安装环境(1-2)
    Ubuntu16.04安装NVIDIA驱动,教你如何优雅的安装环境(1-1)
    简述 QPS、TPS、并发用户数、吞吐量关系
    Springboot验证注解@vaild的使用
  • 原文地址:https://www.cnblogs.com/gisoracle/p/12464733.html
Copyright © 2011-2022 走看看