• ArcGIS Pro二次开发-判断表,要素是否存在


     // Must be called within QueuedTask.Run9)
            public static bool FeatureClassExists(string tableName, string FileName)
            {
                List<string> pList = new List<string>();
                tableName = tableName.ToUpper();
                Task task = QueuedTask.Run(() =>
    
                {
    
                    using (Geodatabase fileGeodatabase = new Geodatabase(new FileGeodatabaseConnectionPath(new Uri(FileName))))
    
                    {
    
    
    
                        IReadOnlyList<FeatureClassDefinition> fcdefinitions = fileGeodatabase.GetDefinitions<FeatureClassDefinition>();
    
    
    
                        foreach (var definition in fcdefinitions)
    
                        {
    
    pList.Add(definition.GetName().ToUpper()); } } }); task.Wait();
    return pList.IndexOf(tableName) > -1; } // Must be called within QueuedTask.Run() public static bool TableExists(string tableName, string FileName) { List<string> pList = new List<string>(); tableName = tableName.ToUpper(); Task task = QueuedTask.Run(() => { using (Geodatabase fileGeodatabase = new Geodatabase(new FileGeodatabaseConnectionPath(new Uri(FileName)))) { IReadOnlyList<TableDefinition> fcdefinitions = fileGeodatabase.GetDefinitions<TableDefinition>(); foreach (var definition in fcdefinitions) { pList.Add(definition.GetName().ToUpper()); } } }); task.Wait(); return pList.IndexOf(tableName) > -1; }

    调用

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using ArcGIS.Core.CIM;
    using ArcGIS.Core.Data;
    using ArcGIS.Core.Geometry;
    using ArcGIS.Desktop.Catalog;
    using ArcGIS.Desktop.Core;
    using ArcGIS.Desktop.Editing;
    using ArcGIS.Desktop.Extensions;
    using ArcGIS.Desktop.Framework;
    using ArcGIS.Desktop.Framework.Contracts;
    using ArcGIS.Desktop.Framework.Dialogs;
    using ArcGIS.Desktop.Framework.Threading.Tasks;
    using ArcGIS.Desktop.Mapping;
    using ArcGIS.Desktop.Layouts;
    
    
    namespace ProAppModule1
    {
        internal class Button2 : Button
        {
            Geodatabase geodatabase = null;
    
            public async Task OpenFileGDB()
            {
                try
                {
                    await ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run(() =>
                    {
                        // Opens a file geodatabase. This will open the geodatabase if the folder exists and contains a valid geodatabase.
                        using (
                           geodatabase =
                            new Geodatabase(new FileGeodatabaseConnectionPath(new Uri(@"E:LQkk.gdb"))))
                        {
    
    
    
                        }
                    });
                }
                catch (GeodatabaseNotFoundOrOpenedException exception)
                {
                    MessageBox.Show(exception.Message.ToString());
                }
    
            }
            protected override void OnClick()
            {
                string gdb = @"E:LQkk.gdb";
               ArcGISProPub.OpenFileGDB(gdb);
                //task.RunSynchronously();
    
                string layerName = "LQPKZR";
                if (ArcGISProPub.TableExists(layerName,gdb))
                {
                    MessageBox.Show("表:" + layerName + "存在");
                }
                else
                {
                    MessageBox.Show("表:" + layerName + "不存在");
                }
    
                layerName = "LQ";
                if (ArcGISProPub.FeatureClassExists(layerName,gdb))
                {
                    MessageBox.Show("要素:" + layerName + "存在");
                }
                else
                {
                    MessageBox.Show("要素:" + layerName + "不存在");
                }
    
    
    
            }
    
        }
    }
    public static Task<bool> FeatureClassExistsAsync(string fcName)
    
        {
    
          return QueuedTask.Run(() =>
    
          {
    
            try
    
            {
    
              using (Geodatabase projectGDB = new Geodatabase(new FileGeodatabaseConnectionPath(new Uri(Project.Current.DefaultGeodatabasePath))))
    
              {
    
                using (FeatureClass fc = projectGDB.OpenDataset<FeatureClass>(fcName))
    
                {
    
                  return fc != null;
    
                }
    
              }
    
            }
    
            catch (Exception ex)
    
            {
    
              System.Diagnostics.Debug.WriteLine ($@"FeatureClassExists Error: {ex.ToString()}");
    
              return false;
    
            }
    
          });
    
        }
  • 相关阅读:
    IDEA 2020.1 使用eclipse快捷键
    IDEA 2020.1 配置自定义Maven
    Maven 下载、安装、设置国内镜像
    IDEA 2020.1 下载、安装、激活
    MySQL 5.5/5.7 zip版 下载、安装、卸载、报错
    JDK8 下载、安装、配置环境变量
    如何在虚拟机VM15中安装W10
    虚拟机的安装,VMware-workstation-full-15.5.1-15018445
    为什么要买云服务器
    输入子系统实现的按键驱动
  • 原文地址:https://www.cnblogs.com/gisoracle/p/12465190.html
Copyright © 2020-2023  润新知