基于C#的ArcEngine二次开发39:GP工具的使用--界面、参数及示例代码

简介: 基于C#的ArcEngine二次开发39:GP工具的使用--界面、参数及示例代码

本文框架将根据个人学习及工作需求搭建,持续更新。

1 基础

GP工具是ArcGIS中比较常用的数据处理工具,效率高而且经过充分的测试,比较可靠;直接调用这些工具会给我们的工作带来极大的遍历,本文旨在搜集和整理GP工具使用的示例代码,为自己和以后的学习者提供参考学习。

1.1 依赖的名称空间

image.png

1.2 基础代码框架

public void MainFrame()
{
    //创建gp工具
    ESRI.ArcGIS.Geoprocessor.Geoprocessor pGeoprocessor = ESRI.ArcGIS.Geoprocessor.Geoprocessor{};
    pGeoprocessor.OverwriteOutput = true;
    pGeoprocessor.AddOutputToMap = false;
    //创建GDB文件
    CreateFileGDB processor = new CreateFileGDB {};
    processor.out_folder_path = @"d:\临时目录";
    processor.out_name = "temp.gdb";
    pGeoprocessor.Execute(processor, null);
    //其余示例代码可直接参照创建gdb文件的代码进行
}

1.3 使用GP工具的思路

自己琢磨的步骤:

引用ESRI.ArcGIS.Geoprocessing名称空间,创建GP执行对象

在ArcGIS中找到要使用的ArcToolBox工具,其所属的一级目录即为使用该工具需要的引用的名称空间;

打开ArcMap的工具帮助,即可看到使用该工具的参数说明及赋值规则

使用定义的GP对象,执行完成赋值的工具

输出结果

目前没发现怎么直接利用开发帮助文档,找到类似与普通接口调用那样的参数说明,以待后续研究,若有大神知道步骤,欢迎评论区告知。

2 分析工具-AnalysisTools

2.1 叠加工具-Overlay

2.1.1 相交-Intersect

计算输入要素的几何交集,所有图层和/或要素类中相叠置的要素或要素的各部分将被写入到输出要素类。

(1) 功能截图:

20200507154907449.png

(2) 参数说明:

image.png

image.png


(3) 示例代码

        /// <summary>
        /// 成功方式
        /// </summary>
        /// <param name="inputFeatClass">输入要素类</param>
        /// <param name="clipFeatClass">裁剪要素类</param>
        /// <param name="outShpFileName">不带.shp的文件名</param>
        private void IntersectResults(IFeatureClass inputFeatClass, IFeatureClass clipFeatClass, string outShpFileName)
        {
            IGpValueTableObject valTbl = new GpValueTableObjectClass();
            valTbl.SetColumns(2);
            object row = "";
            object rank = 1;
            row = inputFeatClass;
            valTbl.SetRow(0, ref row);
            valTbl.SetValue(0, 1, ref rank);
            row = clipFeatClass;
            valTbl.SetRow(1, ref row);
            rank = 2;
            valTbl.SetValue(1, 1, ref rank);
            Geoprocessor gp = new Geoprocessor();
            gp.OverwriteOutput = true;
            ESRI.ArcGIS.AnalysisTools.Intersect intersect = new ESRI.ArcGIS.AnalysisTools.Intersect();
            intersect.in_features = valTbl;
            intersect.out_feature_class = outShpFileName; 
            intersect.join_attributes = "NO_FID";
            intersect.output_type = "INPUT";
            if (gp.Execute(intersect, null) == null)
            {
                throw new DataOutputException(GetGpMessage(gp));
            }
         }

(4) 调用:

pGeoprocessor.Execute(IntersectResault(inFea1, inFea2, outFeaName), null);


3 数据管理工具 DataManagementTools

3.1 Joins

public AddJoin tableJoin(IFeatureClass editFeatureClass, IFeatureClass srcFeatureClass)
{
    //1 创建gp工具
    ESRI.ArcGIS.Geoprocessor.Geoprocessor pGeoprocessor =     ESRI.ArcGIS.Geoprocessor.Geoprocessor{};
    pGeoprocessor.OverwriteOutput = true;
    pGeoprocessor.AddOutputToMap = false;
    //2 创建GDB文件
    CreateFileGDB processor = new CreateFileGDB {};
    processor.out_folder_path = @"d:\临时目录";
    processor.out_name = "temp.gdb";
    pGeoprocessor.Execute(processor, null);
    //3 图层连接
    AddJoin pAddJoin = new AddJoin { };
    pAddJoin.in_layer_or_view = editFeatureClass;
    pAddJoin.in_field = "FEAID";
    pAddJoin.join_table = srcFeatureClass as ITable;
    pAddJoin.join_field = "FEAID";
    pAddJoin.join_type = "KEEP_ALL";
    pGeoprocessor.Execute(pAddJoin, null);
    //4 图层拷贝
    CopyFeatures pCopy = new CopyFeatures{};
    pCopy.in_features = editFeatureClass;
    pCopy.out_feature_class = "d:\临时目录\temp.gdb\连接图层";
    pGeoprocessor.Execute(pCopy , null);
    //5 移除连接
    //ESRI.ArcGIS.DataManagementTools.RemoveJoin removeJoin = new ESRI.ArcGIS.DataManagementTools.RemoveJoin(editFeatureClass);           
    //IGeoProcessorResult gpResult =  gp.Execute(removeJoin,null) as IGeoProcessorResult; 
}
相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
相关文章
|
6月前
|
IDE C# 开发工具
一个开源轻量级的C#代码格式化工具(支持VS和VS Code)
一个开源轻量级的C#代码格式化工具(支持VS和VS Code)
195 6
|
2月前
|
编解码 C# 数据库
C# + WPF 音频播放器 界面优雅,体验良好
【9月更文挑战第18天】这是一个用 C# 和 WPF 实现的音频播放器示例,界面简洁美观,功能丰富。设计包括播放/暂停按钮、进度条、音量控制滑块、歌曲列表和专辑封面显示。功能实现涵盖音频播放、进度条控制、音量调节及歌曲列表管理。通过响应式设计、动画效果、快捷键支持和错误处理,提升用户体验。可根据需求扩展更多功能。
115 3
|
1月前
|
XML 存储 安全
C#开发的程序如何良好的防止反编译被破解?ConfuserEx .NET混淆工具使用介绍
C#开发的程序如何良好的防止反编译被破解?ConfuserEx .NET混淆工具使用介绍
55 0
|
1月前
|
SQL JSON BI
最好的 C# .NET 报告工具
最好的 C# .NET 报告工具
40 0
|
3月前
|
Android开发 iOS开发 C#
Xamarin.Forms:从零开始的快速入门指南——打造你的首个跨平台移动应用,轻松学会用C#和XAML构建iOS与Android通用界面的每一个步骤
【8月更文挑战第31天】Xamarin.Forms 是一个强大的框架,让开发者通过单一共享代码库构建跨平台移动应用,支持 iOS、Android 和 Windows。使用 C# 和 XAML,它简化了多平台开发流程并保持一致的用户体验。本指南通过创建一个简单的 “HelloXamarin” 应用演示了 Xamarin.Forms 的基本功能和工作原理。
76 0
|
3月前
|
存储 API C#
【Azure Developer】解决Azure Key Vault管理Storage的示例代码在中国区Azure遇见的各种认证/授权问题 - C# Example Code
【Azure Developer】解决Azure Key Vault管理Storage的示例代码在中国区Azure遇见的各种认证/授权问题 - C# Example Code
|
3月前
|
存储 前端开发 C#
WPF/C#:更改界面的样式
WPF/C#:更改界面的样式
43 0
|
5月前
|
算法 C#
C#开源实用的工具类库,集成超过1000多种扩展方法
C#开源实用的工具类库,集成超过1000多种扩展方法
|
5月前
|
存储 Java 编译器
C# 变量与参数详解
C# 变量与参数详解