zoukankan      html  css  js  c++  java
  • ArcGIS二次开发实践— — 遍历ToolBox中的工具!

    在AO中,打开“文件A”的基本流程是:

    1、创建对应“文件A”类型的WorkspaceFactory

    2、用WorkspaceFactory创建“文件A”的Workspace,Workspace可以是文件所在文件夹(如本文后面要创建的ToolBox的Workspace),也可以是空间数据库(如果你把文件存到数据库里了或要打开数据库里的数据)。

    3、用Workspace打开“文件A”,获得对应类型的“文件A”对象

    ----------------------------------------------------好了,开始(这里,我的Toolbox路径为F:RootToolsMagmaDistribution.tbx)。

    ArcGIS的每个Toolbox,在windows下都是一个.tbx文件

    通过AO的对象模型图可以知道,在.Net里用GPToolbox对象来代表Toolbox,因此我们首先需要打开事先准备好的.tbx文件,并实创建一个GPToolbox对象来管理它。

    1、创建一个ToolboxWorkspaceFactory对象

    2、ToolboxWorkspaceFactory来创建用于打.tbx文件ToolboxWorkspace

    3、用ToolboxWorkspace创建GPToolbox对象

    这样我们就创建了一个代表ToolBox的对象,代码如下:

    1 ToolboxWorkspaceFactory toolBoxWSF = new ToolboxWorkspaceFactoryClass();
    2 IToolboxWorkspace toolBoxWS = (IToolboxWorkspace)toolBoxWSF.OpenFromFile("F:\Root\Tools", 0);
    3 IGPToolbox toolbox = toolBoxWS.OpenToolbox("MagmaDistribution.tbx");

    我的MagmaDistribution.tbx里放了3个tool,下面我们来获得这些tool的名字,并输出到控制台:

     1  //输出toolbox的路径信息
     2                 Console.WriteLine("IGPToolBox的PathName:" + toolbox.PathName);
     3                 //从IGPToolbox的ToolNames属性获得toolbox里3个tool的名字。
     4                 ESRI.ArcGIS.Geoprocessing.IEnumGPToolName toolName = toolbox.ToolNames;
     5                 IGPToolName gpn = toolName.Next();
     6                 while (gpn != null)
     7                 {//循环输出tool的名字
     8                     Console.WriteLine(gpn.DisplayName);
     9                     gpn = toolName.Next();
    10                 }

    运行效果:

      

    完整代码:

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Text;
     4 using ESRI.ArcGIS.esriSystem;
     5 using ESRI.ArcGIS.Geodatabase;
     6 using ESRI.ArcGIS.DataSourcesGDB;
     7 using ESRI.ArcGIS.Geoprocessing;
     8 
     9 namespace esriTestConsole
    10 {
    11     class Program
    12     {
    13         private static LicenseInitializer m_AOLicenseInitializer = new esriTestConsole.LicenseInitializer();
    14     
    15         [STAThread()]
    16         static void Main(string[] args)
    17         {
    18             //ESRI License Initializer generated code.//这是创建ArcGIS控制台项目时自动生成的
    19             m_AOLicenseInitializer.InitializeApplication(new esriLicenseProductCode[] { esriLicenseProductCode.esriLicenseProductCodeEngine, esriLicenseProductCode.esriLicenseProductCodeEngineGeoDB, esriLicenseProductCode.esriLicenseProductCodeBasic, esriLicenseProductCode.esriLicenseProductCodeStandard, esriLicenseProductCode.esriLicenseProductCodeAdvanced },
    20             new esriLicenseExtensionCode[] { esriLicenseExtensionCode.esriLicenseExtensionCodeNetwork, esriLicenseExtensionCode.esriLicenseExtensionCodeSpatialAnalyst });
    21             //ESRI License Initializer generated code.
    22             try
    23             {
    24                 ToolboxWorkspaceFactory toolBoxWSF = new ToolboxWorkspaceFactoryClass();
    25                 IToolboxWorkspace toolBoxWS = (IToolboxWorkspace)toolBoxWSF.OpenFromFile("F:\Root\Tools", 0);
    26                 IGPToolbox toolbox = toolBoxWS.OpenToolbox("MagmaDistribution.tbx");
    27                 //输出toolbox的路径信息
    28                 Console.WriteLine("IGPToolBox的PathName:" + toolbox.PathName);
    29                 //从IGPToolbox的ToolNames属性获得toolbox里4个tool的名字。
    30                 ESRI.ArcGIS.Geoprocessing.IEnumGPToolName toolName = toolbox.ToolNames;
    31                 IGPToolName gpn = toolName.Next();
    32                 while (gpn != null)
    33                 {//循环输出tool的名字
    34                     Console.WriteLine(gpn.DisplayName);
    35                     gpn = toolName.Next();
    36                 }
    37 38 } 39 catch (Exception ex) 40 { 41 Console.WriteLine(ex.Message); 42 } 43 ////Do not make any call to ArcObjects after ShutDownApplication() 44 finally 45 { 46 Console.WriteLine("输入任意字符退出程序:"); 47 Console.Read(); 48 m_AOLicenseInitializer.ShutdownApplication(); 49 } 50 } 51 } 52 }
  • 相关阅读:
    被放弃的概率权,机器下围棋不理会沉没成本
    百位性感女明星三围大曝光,体型测试设计
    斯坦福大学机器学习,EM算法求解高斯混合模型
    Javascript图片预加载详解
    使用马尔可夫模型自动生成文章
    18种女粉引流方法、效果、评估
    既然认准了这条路,就不必打听要走多久!
    新媒体运营10个大坑,思维导图版
    谷歌发布"自动机器学习"技术 AI可自我创造
    Centos7下PHP的卸载与安装nginx
  • 原文地址:https://www.cnblogs.com/hellow-zili/p/4163049.html
Copyright © 2011-2022 走看看