【ArcGIS Pro二次开发】(18):地理处理工具类【Geoprocessing】补遗

ArcGIS Pro SDK 3.0中的Geoprocessing类是用于执行地理处理工具的核心类。地理处理工具是用于执行空间分析、数据转换、数据管理等任务的工具集,包括常见的空间分析工具、栅格处理工具、矢量处理工具、地图制图工具等。

之前有简单记录了下Geoprocessing工具的用法:

【ArcGIS Pro二次开发】(9):GeoProcessing工具和自定义工具的调用

最近在使用过程中发现遗漏了不少东西,再次记录,方便查阅。

这次主要记录Geoprocessing的主要方法和参数的使用。


一、【MakeValueArray】方法

MakeValueArray方法用于创建一个GPValue数组,传递多个参数给地理处理工具。

var parameters = Geoprocessing.MakeValueArray(ly, null, @"100 Meters",null,null, "ALL");

参数的类型和数量根据你所要执行的GP工具而定。


二、【ExecuteToolAsync】方法

ExecuteToolAsync是一个异步方法,用于执行地理处理工具。

IGPResult result = await Geoprocessing.ExecuteToolAsync("Buffer_analysis", parameters, null, null, null, executeFlags);

ExecuteToolAsync方法的参数如下:

参数1:要执行的地理处理工具的名称,例如上面的“Buffer_analysis”指的是【缓冲区】工具。

参数2:即上面【MakeValueArray】方法创建的参数数组,参数名称和值的类型必须与地理处理工具的要求相匹配。

参数3:environments。用于设置地理处理工具的环境变量。一般不需要设置环境变量,默认设置为null。

如果需要设置的话,可以通过【MakeEnvironmentArray】来创建:

var environments = Geoprocessing.MakeEnvironmentArray(overwriteoutput: true , extent: "460532 3773964 525111 3827494");

如上所示,设置了2个参数:【overwriteoutput】输出是否覆盖、【extent】范围。

参数4: cancelToken。用于取消地理处理工具的执行。如果不需要取消功能,一般就默认设置为null。

参数5:callback。一个GPToolExecuteEventHandler接口,说实话我也不知道有啥用,默认设置为null。

参数6:executeFlags。用于设置工具的执行参数,下面会重点讲。

以上6个参数,一般情况下注意设置1,2,6这3个参数,另3个基本都是设为null。


三、【GPExecuteToolFlags】参数

GPExecuteToolFlags是工具的一组参数设置,用于指定地理处理工具应怎么执行。

GPExecuteToolFlags executeFlags = GPExecuteToolFlags.RefreshProjectItems | GPExecuteToolFlags.GPThread | GPExecuteToolFlags.AddToHistory | GPExecuteToolFlags.AddOutputsToMap | GPExecuteToolFlags.InheritGPOptions;

上面列出了GPExecuteToolFlags的5个主要参数设置:

1、【RefreshProjectItems】

用于在地理处理工具执行后刷新地图项目,如果工具执行后对要素存在修改,建议设置刷新。

2、【GPThread】

用于指定在执行地理处理工具时是否使用新线程。使用新线程可以避免主线程阻塞并提高程序响应速度,但也可能导致内存使用过高和线程冲突等问题。建议正常情况下还是先不用。

3、【AddToHistory】

指定执行结果将添加到历史记录中。这对于用户需要追踪之前的地理处理操作非常有用。建议打开。

4、【AddOutputsToMap】

工具执行结果添加到当前地图中。这点可根据需要选择,最终结果数据可以添加显示,但是如果是中间数据,则可以不显示。我在之前做的一个拓扑工具就因为没有设置,致使中间数据添加到当前地图中,显得很乱。

5、【InheritGPOptions】

用于指定是否继承执行地理处理工具的GP选项。例如,如果当前GP环境设置了输出坐标系、Z值和M值,那么在执行地理处理工具时,这些设置将被继承并应用于工具的输出。一般情况下,我是不会去设置GP环境,所以这个Flag也不会去用。


四、【ShowMessageBox】方法

这里的Geoprocessing.ShowMessageBox,和一般的MessageBox不同,是专门针对GP工具的消息框,感觉更好用一些。

Geoprocessing.ShowMessageBox(toolResult.Messages, "GP Messages", toolResult.IsFailed ? GPMessageBoxStyle.Error : GPMessageBoxStyle.Default);

窗口界面如下:


五、【OpenToolDialogAsync】方法

Geoprocessing.OpenToolDialogAsync方法用于打开地理处理工具的参数对话框,以便用户可以手动输入参数值。该方法通常用于需要用户自定义参数值的情况,例如需要使用用户指定的文件路径、日期等。这个方法主要是实现用户交互,如果需要用户手动输入参数值,用这个比较合适。不过感觉到目前为止,都还想不到什么地方会用到它。


以上就是本次补遗的内容。现在回头看之前的文章,还是挺乱的,有很多疏漏。

现在是初学的积累阶段,等以后再好好整理吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/3826.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

整理了一份github上比较热门的ChatGPT项目,值得收藏

ChatGPT已经火了一段时间了,但是,热度依旧是各大自媒体的热榜。由于,国内不能直接访问ChatGPT,国内的开发者依托OpenAI的接口,开发出一些ChatGPT的应用。今天就整理一下github上最热门的ChatGPT项目。 lencx/ChatGPT 该项目是Cha…

springboot校友社交系统

050-springboot校友社交系统演示录像开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:e…

蓝桥杯第14天(Python版)

并查集的使用# 并查集模板 N400 fa[] def init(): # 初始化,默认自身为根接点for i in range(N):fa.append(i)def merge(x,y): # 发现可以合并,默认选x的根节点为根接点fa[find(x)]find(y)def find(x): # 相等就是根结点,不然就递归查找根…

Vue3监听器使用

watch(监听的对象或值, 回调函数(参数新值,旧值), 配置项是对象{ immediate: true//立即监听--进入就会执行一次 deep:true //深度监听 }) 首先引入 import { ref, watch } from vue; 设置响应式数据 const num ref(1) …

【数据结构篇C++实现】- 栈

文章目录🚀一、栈的原理精讲🚀二、栈的算法实现⛳栈的顺序存储结构🎉(一)顺序栈1.栈的结构体定义2.栈的初始化3.判断空栈4.判断栈满5.元素入栈6.元素出栈7.获取栈顶元素🎉(二)共享栈…

冯诺依曼,操作系统以及进程概念

文章目录一.冯诺依曼体系结构二.操作系统(operator system)三.系统调用和库函数四.进程1.进程控制块(PCB)2.查看进程3.系统相关的调用4.fork介绍(并发引入)五.总结一.冯诺依曼体系结构 计算机大体可以说是…

MD5加密竟然不安全,应届生表示无法理解?

前言 近日公司的一个应届生问我,他做的一个毕业设计密码是MD5加密存储的,为什么密码我帮他调试的时候,我能猜出来明文是什么? 第六感,是后端研发的第六感! 正文 示例,有个系统,前…

【深度强化学习】(6) PPO 模型解析,附Pytorch完整代码

大家好,今天和各位分享一下深度强化学习中的近端策略优化算法(proximal policy optimization,PPO),并借助 OpenAI 的 gym 环境完成一个小案例,完整代码可以从我的 GitHub 中获得: https://gith…

泰克信号发生器特点

泰克信号发生器是一种用于产生各种类型的电子信号的仪器,可以广泛应用于电子、通信、自动化、医疗等领域。泰克信号发生器具有以下特点:多种信号类型:泰克信号发生器可以产生多种类型的电子信号,包括正弦波、方波、三角波、脉冲等…

TitanIDE:云原生开发到底强在哪里?

原文作者:行云创新技术总监 邓冰寒 引言 是一种新的软件开发方法,旨在构建更可靠、高效、弹性、安全和可扩展的应用程序。与传统的应用程序开发方式不同,云原生是将开发环境完全搬到云端,构建一站式的云原生开发环境。云原生的开…

PWM互补输出,以及死区时间计算

本文基于野火例程进行解说 实验内容 本次实验输出一对互补的pwm波,且进行死区时间的计算说明。 代码 互补输出对应的定时器初始化代码: bsp_advance_tim.c /********************************************************************************* fi…

【YOLO】YOLOv8训练自定义数据集(4种方式)

YOLOv8 出来一段时间了,继承了分类、检测、分割,本文主要实现自定义的数据集,使用 YOLOV8 进行检测模型的训练和使用 YOLOv8 此次将所有的配置参数全部解耦到配置文件 default.yaml,不再类似于 YOLOv5,一部分在配置文件…

Anaconda 的安装配置及依赖项的内外网配置

在分享anaconda 的安装配置及使用前,我们必须先明白anaconda是什么;Anaconda是一个开源的Python发行版本。两者区别在于前者是一门编程语言,后者相当于编程语言中的工具包。 由于python自身缺少numpy、matplotlib、scipy、scikit-learn等一系…

Java中的深拷贝和浅拷贝

目录 🍎引出拷贝 🍎浅拷贝 🍎深拷贝 🍎总结 引出拷贝 现在有一个学生类和书包类,在学生类中有引用类型的书包变量: class SchoolBag {private String brand; //书包的品牌private int size; //书…

7.网络爬虫—正则表达式详讲

7.网络爬虫—正则表达式详讲与实战Python 正则表达式re.match() 函数re.search方法re.match与re.search的区别re.compile 函数检索和替换检索:替换:findallre.finditerre.split正则表达式模式常见的字符类正则模式正则表达式模式量词正则表达式举例前言&…

2022财报逆转,有赞穿透迷雾实现突破

2022年,商家经营面临困难。但在一些第三方服务商的帮助下,也有商家取得了逆势增长。 2023年3月23日,有赞发布2022年业绩报告,它帮助许多商家稳住了一整年的经营。2022年,有赞门店SaaS业务的GMV达到425亿元&#xff0c…

24万字智慧城市顶层设计及智慧应用解决方案

本资料来源公开网络,仅供个人学习,请勿商用,如有侵权请联系删除。部分资料内容: 4.8 机房消防系统 4.8.1消防系统概况 根据本工程机房消防系统的特殊要求,整个消防系统由火灾报警系统、消防联动系统和气体灭火系统三部…

常见的嵌入式微处理器(Micro Processor Unit,MPU)

嵌入式微处理器是由通用计算机中的CPU演变而来的。它的特征是具有32位以上的处理器,具有较高的性能,当然其价格也相应较高。但与计算机处理器不同的是,在实际嵌入式应用中,只保留和嵌入式应用紧密相关的功能硬件,去除了…

医院陪诊系统源码,可以提供新的就医方式

随着人们生活水平的提高和医疗服务的进步,越来越多的人们开始注重家庭健康和医疗保健。在这个背景下,陪护系统和医院陪诊系统应运而生,成为了现代医疗服务领域中的重要组成部分。 陪护系统是一种为患者提供家庭养护服务的机构,它…

“蓝桥杯”递推和递归(一)——取数位

1. 算法简介 递推和递归虽然叫法不同,但它们的基本思想是一致的,在很多程序中,这两种算法可以通用,不同的是递推法效率更高,递归法更方便阅读。 (1)递推法 递推法是一种重要的数学方法&#…