zoukankan      html  css  js  c++  java
  • 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;
    
            }
    
          });
    
        }
  • 相关阅读:
    Opensource .NET and Mono REST Web Services framework.NET Community Content on InfoQ Servicestack
    动态软件框架开发模型图
    数据库镜像
    DDD:策略模式如何结合动态表达式
    CentOS下j2ee环境搭建
    C#代码段编辑/编译工具
    .NET平台下不借助Office实现Word、Powerpoint等文件的解析(完)
    .NET Attribute(特性)的作用与用法
    tornado开发输入输出,数据库操作,内置模板,综合示例
    基于事件的异步编程模式(EMP)
  • 原文地址:https://www.cnblogs.com/gisoracle/p/12465190.html
Copyright © 2011-2022 走看看