arcgis属性遍历插件,ArcGIS二次开发实践— — 遍历ToolBox中的工具!

标签:

在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 }

运行效果:

20181016132011832511.png

完整代码:

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 }

标签:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值