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;

        }

      });

    }
原文地址:https://www.cnblogs.com/gisoracle/p/12465190.html