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& ...
随机推荐
- Joomla
joomla Joomla实际有两个开源的东西: 1.Joomla内容管理系统即JoomlaCMS(Content Management System, CMS).它是网站的一个基础管理平台.几乎适合 ...
- 十天学会<div+css>横向导航菜单和纵向导航菜单
纵向导航菜单及二级弹出菜单 纵向导航菜单:一级菜单 <head><style type="text/css">body { font-family: Ver ...
- org.apache.catalina.webresources.Cache.getResource Unable to add the resource
org.apache.catalina.webresources.Cache.getResource Unable to add the resource at xxx to the cache be ...
- Jquery基础之DOM操作
转自:http://www.cnblogs.com/bro-ma/p/3063942.html JQuery中的DOM操作主要对包括:建[新建].增[添加].删[删除].改[修改].查[查找][像数据 ...
- mongodb 备份 还原 导出 导入
张映 发表于 2013-12-03 分类目录: nosql 标签:mongodb, 备份, 导入, 导出, 还原 mongodb数据备份和还原主要分为二种,一种是针对于库的mongodump和mong ...
- ajax属性 data--------------20160705
$.ajax({ type : "get", //这里get和post都可以 url : "cccccc.ccc", data: "name = xx ...
- win10 内测14352 加入了容器 和docker新功能,想体验的赶快升级
原来只在server2016上有,现在加入到win0内测版了windows 容器提供了两种级别的隔离技术,分别是Windows Server container 和Hyper-V Container ...
- linux命令每日一练习 wc more
wc该命令统计文件行数,字数或者字节数 wc -l 统计行数 wc -w 统计字数 wc -c 统计字节数 more 显示文件内容,类似于cat more +n 从第n行开始显示 more -n 限定 ...
- extjs combobox
states.js中 Ext.example.states=[ ['AL','ALabama','The Heart of Dixie'], ['AK','Alaska','The Land of t ...
- Linux 文件的基本操作
1>.新建空白文件: touch命令-->$ touch test 2>.新建目录: mkdir命令-->$mkdir mydir 使用 -p参数:同时创建父目录-->$ ...