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:\LQ\kk.gdb"))))
                    {



                    }
                });
            }
            catch (GeodatabaseNotFoundOrOpenedException exception)
            {
                MessageBox.Show(exception.Message.ToString());
            }

        }
        protected override void OnClick()
        {
            string gdb = @"E:\LQ\kk.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 + "不存在");
            }



        }

    }
}

猜你喜欢

转载自www.cnblogs.com/gisoracle/p/12465190.html