原文:http://blog.csdn.net/SchnecKen/article/details/5915770

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中的部分参数是否设置了,有可能没有像软件操作界面中那样进行默认设置。

C#+AE调用ArcToolbox工具相关推荐

  1. arctoolbox工具

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

  2. AO 直接调用GeoProcessing 工具

    Geoprocessing是ArcGIS的一个基础组成部分.无论你是一个新手抑或老资格的专家,geoprocessing都是你使用ArcGIS完成每天工作的一部分.它提供了数据分析.数据管理和数据转换 ...

  3. hdf heg 批量拼接_python调用HEG工具批量处理MODIS数据

    下面的代码主要用于使用python语言调用NASA官方的MODIS处理工具HEG进行投影坐标转换与重采样批量处理 主要参考 主要的注意事项如下: 根据HEG用户手册批量生成批处理参数文件,可以在HEG ...

  4. python 调用HEG工具批量处理modis数据将hdf转为tif

    python 调用HEG工具批量处理modis数据将hdf转为tif 搞了2.3天才搞定,在这里做个记录,希望 可以帮到需要的朋友. HEG工具安装需要的准备工作: 一.. JAVA安装. 电脑上没有 ...

  5. Prometheus:Java调用PromQL工具类(瞬时数据查询)

    目录 PostMan瞬时数据查询:Windows主机空闲内存量 请求 响应数据 Java:调用PromQL工具类(瞬时数据查询) Prometheus返回结果反序列化 Prometheus常用Prom ...

  6. CTF零基础--手把手带你如何下载调用dirsearch工具

    dirsearch是比较实用的扫描渗透工具,作为刚接触的小白来说,不知道从何开始,甚至怎么安装或者调用都不知从何入手,这里通过图文形式手把手带小白们实操,希望有所帮助. --下载 下载的途径很多,CS ...

  7. 服务调用追踪工具skywalking实践

    skywalking简介 skywalking是一个开源的可观测平台,用于收集.分析.聚合和可视化来自服务和云原生基础设施的数据.skywalking提供了一种简单的方式来维护您的分布式系统的清晰视图 ...

  8. python modis数据拼接_python调用HEG工具批量处理MODIS数据的方法及注意事项

    下面的代码主要用于使用python语言调用NASA官方的MODIS处理工具HEG进行投影坐标转换与重采样批量处理 主要参考 HEG的用户手册:https://newsroom.gsfc.nasa.go ...

  9. 如何调用封装工具类调用网上接口查询工作日

    如何调用封装工具类调用网上接口查询工作日 这里的编辑器是STS,用的springboot集成环境: 先引进pom.xml依赖包 <?xml version="1.0" enc ...

最新文章

  1. js控制 html.textboxfor,javascript - Html.TextBoxFor regex is not working - Stack Overflow
  2. TCP/IP GUIDE
  3. Android Chart框架 MPAndroidChart 坐标轴设置
  4. PWN-PRACTICE-BUUCTF-25
  5. 数据分析-书籍整理(二)
  6. getSystemService
  7. c语言一串字符括号配对,C语言实现括号匹配的方法
  8. mysql 去重 根据id_点赞功能,用MySQL还是Redis
  9. async_memcache for tornado
  10. 辗转相除法求最小公约数
  11. cesium-事件监听(获取点击位置的经纬度和高度)
  12. 如何斩获KDD Cup 2020两冠一季?美团广告团队公开解决方案
  13. SDCC 2017·深圳站八大不容错过的理由
  14. 重磅|棱镜七彩同CNCERT联合发布开源软件供应链安全风险研究报告了!!
  15. 【ML on Kubernetes】第 3 章:探索 Kubernetes
  16. 中国蚁剑(antSword)加载不出来!
  17. LogicFlow与原生BPMN的对比
  18. 作为一名Sem优化师,平台怎么选?甲方or乙方?
  19. Ubuntu修改hosts方法
  20. 软件测试简介教程:单元测试、黑盒测试、白盒测试

热门文章

  1. oracle高级函数去重,傅老师课堂:Oracle高级应用之去重聚合函数
  2. PSCP工具的使用教程
  3. AndroidStudio模拟器进程被杀死的解决方案
  4. 车载音频总线A2B编解码系统
  5. 密码学-07CCA安全与认证加密
  6. 华为瘦胖ap互转_华为AP胖瘦模式转换步骤资料.doc
  7. Bosun 预警配置
  8. C语言最难学的四大内容是什么?
  9. 基于javaweb仿京东商城管理系统的设计与实现(含论文和程序源码及数据库文件)
  10. 大学应届生,想转行学云计算,该怎么学,没有基础