标签:
在AO中,打开“文件A”的基本流程是:
1、创建对应“文件A”类型的WorkspaceFactory;
2、用WorkspaceFactory创建“文件A”的Workspace,Workspace可以是文件所在文件夹(如本文后面要创建的ToolBox的Workspace),也可以是空间数据库(如果你把文件存到数据库里了或要打开数据库里的数据)。
3、用Workspace打开“文件A”,获得对应类型的“文件A”对象;
----------------------------------------------------好了,开始(这里,我的Toolbox路径为F:\Root\Tools\MagmaDistribution.tbx)。
ArcGIS的每个Toolbox,在windows下都是一个.tbx文件。
通过AO的对象模型图可以知道,在.Net里用GPToolbox对象来代表Toolbox,因此我们首先需要打开事先准备好的.tbx文件,并实创建一个GPToolbox对象来管理它。
1、创建一个ToolboxWorkspaceFactory对象。
2、ToolboxWorkspaceFactory来创建用于打.tbx文件的ToolboxWorkspace。
3、用ToolboxWorkspaceFactory通过.tbx文件的路径创建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 }
标签: