在ArcEngine中使用Geoprocessing工具-执行工具
2015-08-11 14:56
267 查看
http://blog.sina.com.cn/s/blog_76e01b5b01014pi9.html
来解析一下Geoprocessor类的Execute方法,他有两种重载,Execute(IGPProcess, ITrackCancel)和Execute(string, IVariantArray, ITrackCancel)。
Execute(IGPProcess, ITrackCancel)
IGProcess是所有Geoprocessor工具类都实现了的接口,通过ITrackCancel接口能够处理用户发出的取消指令并进一步处理,暂时用不上,一般都用null直接代替了。
因此这种方式的执行流程如下:
ESRI.ArcGIS.AnalysisTools.Buffer bufferTool = new ESRI.ArcGIS.AnalysisTools.Buffer();
GP.Execute(bufferTool, null);
Execute(string, IVariantArray, ITrackCancel)
string即是这个GP工具的名字了,IVariantArray是esriSystem命名空间下的一个接口,提供对esriSystem数组类VarArrayClass的访问功能,该类提供执行GP所需的参数,通过上文,大概也应该猜到了,这个参数数组类的成员应该也是字符串,方法如下:
GP.AddToolbox(@"C:\SanDiego\BestPath.tbx");
IVariantArray parameters = new VarArrayClass();
parameters.Add(@"C:\SanDiego\source.shp");
parameters.Add(@"C:\SanDiego\destination.shp");
parameters.Add(@"C:\SanDiego\bestpath.shp");
GP.Execute("CalculateBestPath", parameters, null);
好的,这两种方法该用在哪里这下都明白了,对于既有的Geopressing工具是第一种方法,对于自己制作的ArcToolBox则可以使用第二种方法来执行。(窃以为第二种方法的形式更为优雅一点。)
我们还有一种方法可以把自制的ArcToolBox在系统中声明为引用,从而以第一种方式执行。这种方法我目前想到的好处有一是保护了tbx文件(在发布的系统里面tbx文件会被编译成dll,从而保护了自定义模型的内部实现细节不被泄露),二是在不打开ArcGIS Desktop产品甚至不安装的情况就能了解该工具箱中包含哪些工具和模型,以及入参出参的情况。
添加的方法很简单,在Visual Studio集成开发环境菜单中,项目->Add ArcGIS ToolBox Reference,选中你需要的tbx文件,执行加载即可,然后的用法跟添加了既有的Geoprocessing Tools引用是一样的了。不过目前我遇到的问题是经常会出现加载不成功,提示有些工具不能加载,甚至是ArcGIS自带的那些tbx文件,但是还能用,这就比较诡异了,似乎是版本的问题,关于这个问题会继续追踪报道。
来解析一下Geoprocessor类的Execute方法,他有两种重载,Execute(IGPProcess, ITrackCancel)和Execute(string, IVariantArray, ITrackCancel)。
Execute(IGPProcess, ITrackCancel)
IGProcess是所有Geoprocessor工具类都实现了的接口,通过ITrackCancel接口能够处理用户发出的取消指令并进一步处理,暂时用不上,一般都用null直接代替了。
因此这种方式的执行流程如下:
ESRI.ArcGIS.AnalysisTools.Buffer bufferTool = new ESRI.ArcGIS.AnalysisTools.Buffer();
GP.Execute(bufferTool, null);
Execute(string, IVariantArray, ITrackCancel)
string即是这个GP工具的名字了,IVariantArray是esriSystem命名空间下的一个接口,提供对esriSystem数组类VarArrayClass的访问功能,该类提供执行GP所需的参数,通过上文,大概也应该猜到了,这个参数数组类的成员应该也是字符串,方法如下:
GP.AddToolbox(@"C:\SanDiego\BestPath.tbx");
IVariantArray parameters = new VarArrayClass();
parameters.Add(@"C:\SanDiego\source.shp");
parameters.Add(@"C:\SanDiego\destination.shp");
parameters.Add(@"C:\SanDiego\bestpath.shp");
GP.Execute("CalculateBestPath", parameters, null);
好的,这两种方法该用在哪里这下都明白了,对于既有的Geopressing工具是第一种方法,对于自己制作的ArcToolBox则可以使用第二种方法来执行。(窃以为第二种方法的形式更为优雅一点。)
我们还有一种方法可以把自制的ArcToolBox在系统中声明为引用,从而以第一种方式执行。这种方法我目前想到的好处有一是保护了tbx文件(在发布的系统里面tbx文件会被编译成dll,从而保护了自定义模型的内部实现细节不被泄露),二是在不打开ArcGIS Desktop产品甚至不安装的情况就能了解该工具箱中包含哪些工具和模型,以及入参出参的情况。
添加的方法很简单,在Visual Studio集成开发环境菜单中,项目->Add ArcGIS ToolBox Reference,选中你需要的tbx文件,执行加载即可,然后的用法跟添加了既有的Geoprocessing Tools引用是一样的了。不过目前我遇到的问题是经常会出现加载不成功,提示有些工具不能加载,甚至是ArcGIS自带的那些tbx文件,但是还能用,这就比较诡异了,似乎是版本的问题,关于这个问题会继续追踪报道。
相关文章推荐
- 转:Tumblr:150亿月浏览量背后的架构挑战
- 2.linux下Makefile编写规范
- runLoop和runtime的分析
- 解决Vmware虚拟机中克隆Centos后无法启动网卡的问题
- [MacOSX]_[LaunchDaemons]_[Mac OS X 安装Tomcat开机启动服务的方法之一]
- [MacOSX]_[LaunchDaemons]_[Mac OS X 安装Tomcat开机启动服务的方法之一]
- 服务器,使用Tomcat服务器(8.11)
- 1.linux下Kconfig编写规范
- CentOS 6.4 编译安装Mysql 5.6.14
- malformed or corrupted AST file: 'Unable to load module "/Users/yx/Library/Developer/Xcode/DerivedDa
- Centos7 SSH安全防护---系统安全管家
- junit集成maven。 No SecurityManager accessible to the calling code, either bound to the org.apache.shir
- Linux信号列表详解
- 使用CSS创建有图标的网站导航菜单
- nginx状态监控
- SHELL NR与FNR区别
- VS2010调用apache APR 编译的静态库
- rgba()和opacity的使用
- Centos6.5+Python+安装各种包
- 由12306.cn谈谈网站性能技术