标签:tbx gpn Console ArcGIS 二次开发 ToolBox toolbox ESRI
ArcGIS二次开发实践— — 遍历ToolBox中的工具!
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 }
运行效果:
完整代码:
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 }
posted on 2015-04-21 21:38 gisoracle 阅读(3263) 评论(0) 编辑 收藏 举报
标签:tbx,gpn,Console,ArcGIS,二次开发,ToolBox,toolbox,ESRI 来源: https://blog.51cto.com/u_12139363/3030622
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。