Geoprocessing是ArcGIS提供的一个非常实用的工具,借由Geoprocessing工具可以方便的调用ArcToolBox中提供的各类工具,本文在ArcEngine9.2平台环境下总结了调用ArcToolBox工具的使用方法:

1、调用ArcToolBox工具方法

以ArcToolBox->Analysis Tools->Proximity->Buffer工具的调用为例,C#代码如下:

using ESRI.ArcGIS.AnalysisTools;         //添加引用
         using ESRI.ArcGIS.Geoprocessor;

Geoprocessor gp = new Geoprocessor();    //初始化Geoprocessor
         gp.OverwriteOutput = true;                     //允许运算结果覆盖现有文件

ESRI.ArcGIS.AnalysisTools.Buffer pBuffer = new ESRI.ArcGIS.AnalysisTools.Buffer(); //定义Buffer工具
         pBuffer.in_features = pVorLineLayer;    //输入对象,既可是IFeatureLayer对象,也可是完整文件路径如“D://data.shp”
         pBuffer.out_feature_class = pBuffer;     //输出对象,一般是包含输出文件名的完整文件路径,如“D://buffer.shp”

//设置缓冲区的大小,即可是带单位的具体数值,如0.1 Decimal Degrees;也可是输入图层中的某个字段,如“BufferLeng”
         pBuffer.buffer_distance_or_field = "BufferLeng";    
         pBuffer.dissolve_option = "ALL";     //支持融合缓冲区重叠交叉部分
         gp.Execute(pBuffer, null);                //执行缓冲区分析

参考网页:http://edndoc.esri.com/arcobjects/9.2/NET/c4ff8b68-0410-435f-b8e5-682d5cea47cf.htm

2、参数设置

在调用ArcToolBox执行具体的分析操作时,需要设置各类输入输出参数,简单概括起来说主要分为两类:对应于Environment Settings对话框的Geoprocessor对象设置、对应于具体操作窗口的方法设置。以ArcToolBox->Analysis Tools->Overlay->Intersect为例,C#代码如下:

Geoprocessor gp = new Geoprocessor();
            gp.OverwriteOutput = true;    //覆盖原有文件并重写

//Environment Settings对话框参数设置,具体名称参考操作界面Help中对应参数文档

object obj = gp.GetEnvironmentValue("Extent");  //设置Exten,大小写无关;

gp.SetEnvironmentValue("Extent", "MAXOF");     //或者"113.697050 115.074770 29.969986 31.362495"

obj = gp.GetEnvironmentValue("OutputZFlag");                    //设置Output has Z Values
            gp.SetEnvironmentValue("OutputZFlag", "DEFAULT");

obj = gp.GetEnvironmentValue("OutputMFlag");                    //设置Output has M Values
            gp.SetEnvironmentValue("OutputMFlag", "DEFAULT");

obj = gp.GetEnvironmentValue("OutputCoordinateSystem");  //设置Output Coordinate System
            gp.SetEnvironmentValue("OutputCoordinateSystem", Application.StartupPath + "//zhouyang.prj");

obj = gp.GetEnvironmentValue("QualifiedFieldNames");         //设置Maintain fully qualifid field names
            gp.SetEnvironmentValue("QualifiedFieldNames", "QUALIFIED");

//关于Environment Settings的设置可以参考ArcMap操作界面提供的文档,如图所示:

//具体操作窗口的方法设置

Intersect pIntersect = new Intersect();
            //多个对象的输入:用分号隔开包含完整路径的文件名
            pIntersect.in_features = pInputFeature1 + ";" + pInputFeature2;

//多个对象的输入:使用IGpValueTableObject接口,该接口可以设置Rank(http://resources.esri.com/help/9.3/arcgisengine/dotnet/84349562-e062-44ee-8db0-9fcdcd64708b.htm)

//object inputfeature1 = @"D:/周杨/贝贝/WuhanCity/ThiessenPolygons_Line_Buffer.shp";
            //object inputfeature2 = @"D:/周杨/贝贝/wuhanCity_shp/poi Point.shp";
            //IGpValueTableObject pObject = new GpValueTableObjectClass();
            //pObject.SetColumns(2);
            //pObject.AddRow(ref inputfeature1);
            //pObject.AddRow(ref inputfeature2);
            //pIntersect.in_features = pObject;
            pIntersect.out_feature_class = pOutputFeature;
            pIntersect.join_attributes = "All";
            pIntersect.output_type = "POINT";

gp.Execute(pIntersect, null);      //执行

参考网页:http://edndoc.esri.com/arcobjects/9.2/NET/552ca115-f23b-4a74-a2c5-069c50d6cdcf.htm

3、运行结果对象提取

Geoprocessor对象通过Execute方法执行后将结果保存到指定输出路径下,通过也可以通过IGeoProcessorResult接口读取存储在内容中的结果对象,C#代码如下:

//执行图层求交运算
            IGeoProcessorResult pResult = (IGeoProcessorResult)gp.Execute(pIntersect, null);

IGPUtilities pGPUtil = new GPUtilitiesClass();
            IFeatureClass pFC;
            IQueryFilter pQF;
            pGPUtil.DecodeFeatureLayer(pResult.GetOutput(0),out pFC,out pQF);
            int count = pFC.FeatureCount(null);      //统计Feature对象个数
            IFeatureCursor pCursor = pFC.Insert(true);   //提取FeatureCursor对象
            IFeatureLayer pFeatureLayer = new FeatureLayerClass();
            pFeatureLayer.FeatureClass = pFC;
            m_mapControl.Map.AddLayer(pFeatureLayer);   //加载图层对象

参考网页:http://edndoc.esri.com/arcobjects/9.2/NET/1b14f488-84de-4e7f-8009-cfe612f8dcbe.htm

其实总的说来,ESRI的官方帮助和各类在线帮助文档中都提供了相应的说明,可以很容易搞清楚一些内容,但是在具体的操作过程中,有时候经常得不到结果,这时候就需要关注下Environment Settings中的部分参数是否设置了,有可能没有像软件操作界面中那样进行默认设置。

arctoolbox工具相关推荐

  1. C#+AE调用ArcToolbox工具

    原文:http://blog.csdn.net/SchnecKen/article/details/5915770 Geoprocessing是ArcGIS提供的一个非常实用的工具,借由Geoproc ...

  2. 介绍一些好用的ArcToolbox工具(默认ArcGIS没有)

    这些工具分为三类 Cartography 工具 导出和打印工具 MXD和Lyr处理工具 大家可以从图片的英文说明大概知道是做什么用的 比如我使用一个Find Broken Data Source功能, ...

  3. ArcGIS:ArcToolBox工具使用——提取DEM/DSM中的高程点

    1.添加DEM/DSM栅格图(DOM可辅助绘点) 2.添加或新建点文件shp 3.ArcToolBox  ->  Spatial Analyst Tools  ->  Extraction ...

  4. arcgispython脚本开发工具_06-05【求助】利用python脚本语言开发新的Arctoolbox工具

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 下面是一段python代码,要如何才能在Arctoolbox中实现呢? #-*- encoding:UTF-8 -*- #!/usr/bin/env py ...

  5. ArcGIS加载ArcToolbox工具

    下载相关的Toolbox.tbx如 (1)打开工具箱目录: (2)在工具箱目录右击选择"添加工具箱",选择已下载的工具箱位置添加即可.

  6. 解决在ArcToolbox工具运行无结果的问题

    ArcMap主菜单栏---地理处理---地理处理选项---在后台处理栏中关闭启用.

  7. 【306】通过ArcPy编写ArcToolbox

    参考:使用 Python 创建工具 参考:在 Python 工具箱中定义参数数据类型 基本步骤如下: (1)创建一个 Python 脚本,并保存成 .py 文件. (2)创建一个自定义工具箱(.tbx ...

  8. ArcToolBox 提示ActiveX控件问题解决办法

    ArcToolBox 工具提示ActiveX控件问题 本章导读:这个章节是关于 ArcMap 工具的一个无关痛痒的 Bug 进行处理.如果你的操作系统是Win10 ,并且 ArcGIS 是版本是10. ...

  9. 笑谈ArcToolbox (1) ArcToolbox 的发展方向

    笑谈ArcToolbox (1) ArcToolbox 的发展方向 by 李远祥 ArcGIS工具箱ArcToolbox具有非常多的工具,相信用过的人都非常惊叹,其功能完备并且强大,种类繁多,总能找到 ...

最新文章

  1. python的源代码文件的扩展名是-python源文件后缀是什么?
  2. gorm 返回多条数据_如何优雅的操作数据库?
  3. 肝!分享 2 本高质量算法书籍!
  4. 静态库与动态库(一):概述
  5. 2018-2019-1 20165205 20165233 实验二 固件程序设计
  6. TCP/IP的基本概念
  7. 网络编程~socket
  8. carrot 2 LingoClusteringAlgorithm , STCClusteringAlgorithm 和 BisectingKMeansClusteringAlgorithm算法比较
  9. 三菱触摸屏通讯错误_三菱触摸屏(人机界面)常见问题解析
  10. 量子计算(四):量子力学的发展史
  11. 硬件科普系列之内存篇
  12. 【智能家居】智能单火开关目前普遍存在的问题
  13. ping-pong buffer
  14. 330分能进复试的计算机相关专业排行榜(985院校)(共118个专业)
  15. Quantile g-computation的介绍及R实现
  16. MAX7456 OSD
  17. linux下IIC驱动开发分析
  18. iGrimace iOS7-Ios8-ios一键新机 系统 NZT NEO 非V8锤子IG基本操作全教程:v3 v8
  19. python通过四个点求球心及球心半径
  20. L3-001. 凑零钱(dfs + 各种剪枝)

热门文章

  1. 商业银行软件开发中心的困惑
  2. 谱聚类Python代码详解
  3. mysql1.7(mysql优化,mysql-mmm软件介绍,mysql高可用集群。)
  4. 计算机课故事作文,有趣的电脑课日记600字
  5. Python项目实战 3.1:验证码.图形验证码
  6. 无线耳机全国产化电子元件推荐方案
  7. SAS|where keep rename
  8. python基础运算符讲解(原码、补码、反码)
  9. 在海军节开幕式上,有A、B、C三艘军舰要同时开始鸣放礼炮各21响。已知A舰每隔5秒放一次,B舰每隔6秒放一次,C舰每隔7秒放一次,假设各炮手对时间的掌握非常准确,请编程计算观众总共可以听到几次礼炮声。
  10. 解决兄弟打印机在加入墨粉后如何清零问题