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、用ToolboxWorkspace创建GPToolbox对象。
这样我们就创建了一个代表ToolBox的对象,代码如下:
ToolboxWorkspaceFactory toolBoxWSF = new ToolboxWorkspaceFactoryClass();
IToolboxWorkspace toolBoxWS = (IToolboxWorkspace)toolBoxWSF.OpenFromFile("F:\\Root\\Tools", );
IGPToolbox toolbox = toolBoxWS.OpenToolbox("MagmaDistribution.tbx");
我的MagmaDistribution.tbx里放了3个tool,下面我们来获得这些tool的名字,并输出到控制台:
//输出toolbox的路径信息
Console.WriteLine("IGPToolBox的PathName:" + toolbox.PathName);
//从IGPToolbox的ToolNames属性获得toolbox里3个tool的名字。
ESRI.ArcGIS.Geoprocessing.IEnumGPToolName toolName = toolbox.ToolNames;
IGPToolName gpn = toolName.Next();
while (gpn != null)
{//循环输出tool的名字
Console.WriteLine(gpn.DisplayName);
gpn = toolName.Next();
}
运行效果:

完整代码:
using System;
using System.Collections.Generic;
using System.Text;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.DataSourcesGDB;
using ESRI.ArcGIS.Geoprocessing; namespace esriTestConsole
{
class Program
{
private static LicenseInitializer m_AOLicenseInitializer = new esriTestConsole.LicenseInitializer(); [STAThread()]
static void Main(string[] args)
{
//ESRI License Initializer generated code.//这是创建ArcGIS控制台项目时自动生成的
m_AOLicenseInitializer.InitializeApplication(new esriLicenseProductCode[] { esriLicenseProductCode.esriLicenseProductCodeEngine, esriLicenseProductCode.esriLicenseProductCodeEngineGeoDB, esriLicenseProductCode.esriLicenseProductCodeBasic, esriLicenseProductCode.esriLicenseProductCodeStandard, esriLicenseProductCode.esriLicenseProductCodeAdvanced },
new esriLicenseExtensionCode[] { esriLicenseExtensionCode.esriLicenseExtensionCodeNetwork, esriLicenseExtensionCode.esriLicenseExtensionCodeSpatialAnalyst });
//ESRI License Initializer generated code.
try
{
ToolboxWorkspaceFactory toolBoxWSF = new ToolboxWorkspaceFactoryClass();
IToolboxWorkspace toolBoxWS = (IToolboxWorkspace)toolBoxWSF.OpenFromFile("F:\\Root\\Tools", );
IGPToolbox toolbox = toolBoxWS.OpenToolbox("MagmaDistribution.tbx");
//输出toolbox的路径信息
Console.WriteLine("IGPToolBox的PathName:" + toolbox.PathName);
//从IGPToolbox的ToolNames属性获得toolbox里4个tool的名字。
ESRI.ArcGIS.Geoprocessing.IEnumGPToolName toolName = toolbox.ToolNames;
IGPToolName gpn = toolName.Next();
while (gpn != null)
{//循环输出tool的名字
Console.WriteLine(gpn.DisplayName);
gpn = toolName.Next();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
////Do not make any call to ArcObjects after ShutDownApplication()
finally
{
Console.WriteLine("输入任意字符退出程序:");
Console.Read();
m_AOLicenseInitializer.ShutdownApplication();
}
}
}
}
ArcGIS二次开发实践— — 遍历ToolBox中的工具!的更多相关文章
- ArcGIS二次开发AO软件安装破解教程
最近在做ArcGIS二次开发时,采用C#中的WPF技术,在调研中发现ArcGIS 10.3及以上版本支持WPF技术,但是关于ArcGIS10.3的破解教程甚少,自己尝试了不少方法都失败了,淘@宝@商家 ...
- ArcGIS二次开发入门(一)
作者:朱金灿 来源:http://blog.csdn.net/clever101 公司培训ArcGIS二次开发(C#作为开发语言),自己回家动手实践了一下. 1. 首先是二次开发环境的安装(AE 10 ...
- visual studio2010中C#生成的,ArcGIS二次开发的basetool的dll,注册为COM组件tlb文件,并在arcmap中加载使用
写了个标题好长啊~~~~ 这两天又认识了一个新玩意,记录一下下,啦啦啦~~~~~ 话说,认识arcgis快十年了,从桌面版到engine的二次开发,其实不过才认识到它的冰山一角, 它总是能带来很多还未 ...
- 【ArcGIS二次开发】CreateFeature报错(HRESULT E_FAIL)
在VS2010下基于ArcGIS 10.1做二次开发时遇到个奇怪的问题,对于MXD工程文档中已经存在的图层,获取其FeatureClass可以调用CreateFeature()函数生成要素,但是对于通 ...
- ArcGIS二次开发的几种方式
1.ArcEngine开发 二次开发的常用方式,开发提供接口齐全,功能强大,比较成熟.但是,开发的软件使用需要指定版本的运行环境才能运行. 2.Addin开发 二次开发与ArcMap嵌入,开发方便,可 ...
- 【NX二次开发】查找部件中的对象 UF_OBJ_cycle_objs_in_part
返回所有层上指定类型部件中的所有对象,不管它们的当前显示状态如何.这个例程不返回表达式.指定对象.临时(系统创建的)对象或休眠对象.休眠对象指的是从模型中删除的对象例如,如果你混合了一条边,那么这条边 ...
- ArcGIS 二次开发总结
个人总结 1. Enterprise10.7新特性 新增共享实例,可以将不常用服务分配共享实例,减少服务器压力.仅支持ArcGIS pro发布的地图服务,且仅开启feature access,kml, ...
- ARCGIS 二次开发可以参考的资源(长期更新)
背景: 今天,被领导教导,说是你刚入职,要尽快把项目做起.言语忠恳,而且说不要再在电脑上练习那些小的测试例子了,要直接切入项目,熟悉项目的开发框架,与设计理念.得到,我的负责人(TB)把他做的项目的资 ...
- ArcGIS Server开发实践之【Search Widget工具查询本地地图服务】
加载本地地图服务,并实现要素的查询.(不足之处还请指点)具体代码如下: <!DOCTYPE html> <html dir="ltr"> <head& ...
随机推荐
- Socket通信 简单实现私聊、群聊(dos命令下)
很久以前的一个Demo,这里服务器只做转发功能,根据ID地址和端口号来标识身份,群聊和私聊只是简单实现, 服务器代码如下: import java.util.*; import java.io.*; ...
- 艺萌文件上传下载及自动更新系统(基于networkComms开源TCP通信框架)
1.艺萌文件上传下载及自动更新系统,基于Winform技术,采用CS架构,开发工具为vs2010,.net2.0版本(可以很容易升级为3.5和4.0版本)开发语言c#. 本系统主要帮助客户学习基于TC ...
- string to byte[]
在平常的开发过程中,经常碰到需要将string转化成byte[]字节数组的情形,有两种方法,在这里总结一下. 使用MemoryStream 代码如下. using (MemoryStream sb = ...
- Maven的配置
- P53 T3
为方便旅客,某航空公司拟开发一个机票预定系统.旅行社把预定机票的旅客信息(姓名.性别.工作单位.身份证号码.旅行时间.旅行目的地等)输入进入该系统,系统为旅客安排航班,印出取票通知和账单,旅客在飞机起 ...
- 1472. Martian Army
http://acm.timus.ru/problem.aspx?space=1&num=1472 题目大意: 一颗树,根节点(1) 的值为 1.0,所有叶子节点的值为 0.0 ,其他节点值任 ...
- pom 详解
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- JavaScript 开发的45个经典技巧
JavaScript是一个绝冠全球的编程语言,可用于Web开发.移动应用开发(PhoneGap.Appcelerator).服务器端开发(Node.js和Wakanda)等等.JavaScript还是 ...
- Mysql VARCHAR的最大长度到底是多少
MySQL 数据库的varchar类型在4.1以下的版本中的最大长度限制为255,其数据范围可以是0~255或1~255(根据不同版本数据库来定).在 MySQL5.0以上的版本中,varchar数据 ...
- DLL 导出封装类
首先使用Wizard创建一个Win32 Dynamic-Link Library工程,然后定义一个简单的C++类CInDLL.由于该类会被工程之外的文件所引用,所以需要对这个类进行引出.因为只有引出后 ...