程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> ArcGIS二次開發實踐— — 遍歷ToolBox中的工具!,arcgistoolbox

ArcGIS二次開發實踐— — 遍歷ToolBox中的工具!,arcgistoolbox

編輯:C#入門知識

ArcGIS二次開發實踐— — 遍歷ToolBox中的工具!,arcgistoolbox


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

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved