如何在ArcGIS Pro中使用ArcPy调用地理处理工具

简介: 如何在ArcGIS Pro中使用ArcPy调用地理处理工具

ArcPy可以让您访问ArcGIS Pro中的所有地理处理工具。在Python中,地理处理工具被称为地理处理工具。这个名称并不完全对应于工具标签,这是工具在ArcGIS Pro中显示的方式。工具名称通常与工具标签相同,但不包含空格。例如,数据管理工具箱中的AddField工具的名称是AddField in ArcPy。

除了使用工具名称外,对工具的引用还需要工具箱别名。这是因为不同工具箱中的多个工具可以共享相同的名称。例如,有多个裁剪工具:一个在Analysis工具箱(即Clip),另一个在Data Management工具箱(即Clip Raster,但在ArcPy中名称是Clip)。工具箱别名与工具箱的名称或标签都不相同——它通常是一个缩写版本。例如,Data Management工具箱的别名是“Management”。

Analysis工具箱中的Clip工具被引用为Clip_analysis()。工具集的名称(在本例中是Extract)没有被引用。另一方面,数据管理工具箱中的裁剪栅格工具被引用为Clip_management()。

在一行Python代码中有两种访问工具的方法。使用工具最简单的方法是调用其相应的函数。所有的地理处理工具都可以在ArcPy中作为函数使用。Python中的函数是一个已定义的功能,用于执行特定的任务;因此,ArcGIS Pro中的每个地理处理工具都是arccpy中的一个功能是有意义的。通过函数调用工具的语法是

arcpy.<toolname_toolboxalias>(<parameters>)

例如,下面的代码运行裁剪工具:

import arcpy
arcpy.env.workspace = "C:/Data"
arcpy.Clip_analysis("streams.shp", "study.shp", "result.shp")

工具也可以通过使用与工具箱别名匹配的模块来使用。访问工具的另一种方法是,首先将工具箱作为模块调用,然后将工具作为该模块的函数调用,然后调用工具的参数。语法如下

arcpy.<toolboxalias>.<toolname>(<parameters>)

下面是运行裁剪工具的例子:

import arcpy
arcpy.env.workspace = "C:/Data"
arcpy.analysis.Clip("streams.shp", "study.shp", "result.shp")

两种方法都是正确的

运行地理处理工具的一个关键方面是获得正确的参数语法。每个地理处理工具都有参数,包括必要的和可选的参数,这些参数为工具提供执行所需的信息。常用参数包括输入数据集、输出数据集和控制工具执行的关键字。参数本身有属性,例如:

  • Name:每个工具参数的唯一名称
  • Type:预期的数据类型,如特征类、整数、字符串或栅格
  • Direction:参数是否定义输入值或输出值
  • Required:参数值是必须提供还是可选

ArcGIS Pro中每个工具的文档有助于描述其参数和属性。一旦提供了一组有效的参数,工具就可以运行了。大多数参数都指定为字符串。字符串由标识参数值的文本组成,例如数据集的路径或关键字。

这是裁剪工具的帮助文档

Clip工具有四个参数,最后一个(cluster_tolerance)是可选的。“Clip”工具的语法为

Clip(in_features, clip_features, out_feature_class,
 {cluster_tolerance})

“裁剪”工具的名称后面跟着圆括号内的工具参数。参数之间用逗号分隔。可选参数用大括号{}括起来。参数之间使用一个空格,但这只是为了提高可读性,并不是必需的。

地理处理工具的语法一般遵循相同的模式,如下所示:

必需参数在前面,后面是可选参数。这个顺序反映了ArcGIS Pro中地理处理框架中工具的总体设计。输入数据集通常是第一个或多个参数,然后是输出数据集(如果有的话)。接下来是附加的必需参数,最后是可选参数。这一顺序并不总是严格遵循,特别是对于具有许多参数的工具。输入数据集的参数名称以“in_”作为前缀(如in_data、in_features、in_table、in_workspace),输出数据集的参数名称以“out_”作为前缀(如out_data、out_features、out_table)。

首先列出必需的参数,这样就可以在不需要可选参数时简单地省略它们。但是,有时必须设置一些可选参数。因为参数必须按照工具语法中列出的顺序指定,这意味着可能需要跳过一些可选参数。

例如,思考一下Buffer工具的语法:

Buffer(in_features, out_feature_class,
 buffer_distance_or_field, {line_side},
 {line_end_type}, {dissolve_option}, {dissolve_field})

Buffer工具的代码示例如下:

import arcpy
arcpy.env.workspace = "C:/Data/study.gdb"
arcpy.Buffer_analysis("roads", "buffer", "100 METERS")

在本例中,如何指定可选的dissolve_option参数,并跳过必需参数后面的其他可选参数?指定该参数有多种方式,如下所示:

  • 通过使用空字符串("")、数字符号("#")或值None设置可选参数
  • 通过指定必须设置的参数名称,绕过所有其他参数

Buffer工具有三个必需参数和五个可选参数。如果你必须跳过其中两个可选参数。可以通过几种方式实现:

arcpy.Buffer_analysis("roads", "buffer", "100 METERS", "", "",
"LIST", "CODE")
arcpy.Buffer_analysis("roads", "buffer", "100 METERS", "#", "#",
"LIST", "CODE")
arcpy.Buffer_analysis("roads", "buffer", "100 METERS", None, None,
"LIST", "CODE")
arcpy.Buffer_analysis("roads", "buffer", "100 METERS",
dissolve_option="LIST", dissolve_field="CODE")

在这四种情况中,可选参数line_side和line_end_type都保留其默认值。

对于None的使用,有必要做一个简短的讨论。None是一个Python关键字,用于定义空值或根本没有值。它与空字符串不同,但在为工具设置参数的上下文中具有相同的效果。None在python中是它自己的数据类型。, NoneType。这个关键字是大写的,因此使用none是不正确的,会产生错误。它也不同于使用具有相同字符的字符串,

使用“none”、“none”或“none”也会产生错误。这些类似的词可能会导致混淆,因为地理处理工具的一些参数值使用NONE作为选项之一。因此,对于不同的场景,参数的值可以设置为="NONE"。

在目前的示例中,工具的参数使用实际的文件名(例如,roads)。也就是说,参数不是设置为变量,而是直接使用值。尽管这种语法是正确的,并且工作得很好,但是使用变量作为参数而不是使用硬编码的值通常会使代码更灵活。首先,您必须创建变量并为它们赋值。然后就可以使用变量作为参数了。当函数被调用时,这些变量被传递给工具。例如,在使用裁剪工具的情况下,它看起来如下所示:

import arcpy
arcpy.env.workspace = "C:/Data"
infc = "streams.shp"
clipfc = "study.shp"
outfc = "result.shp"
arcpy.Clip_analysis(infc, clipfc, outfc)

注意,变量不需要与工具语法中的参数名称相同。例如,在Clip工具的语法中,输入特性的参数名是in_features,而脚本使用infc作为变量。实际上,您可以使用任何有效的变量名,但给变量起有意义的名称是一种良好的实践。

在这个示例脚本中,数据集的名称仍然硬编码在脚本本身中,而不是在调用裁剪工具的特定代码行中。下一个逻辑步骤是使用用户或其他脚本或工具提供的变量值,这意味着文件名不再出现在脚本中。例如,下面的代码运行Copy工具,并使用arcpy.GetParameterAsText()函数从用户输入中获取输入和输出特征类:

import arcpy
infc = arcpy.GetParameterAsText(0)
outfc = arcpy.GetParameterAsText(1)
arcpy.Copy_management(infc, outfc)

根据用户输入的参数设置工具参数是脚本工具常用的一种方式。以这种方式处理变量为您提供了更多的灵活性,并使您的大部分代码可重复使用。

目录
相关文章
|
传感器 BI 定位技术
提高效率 |ArcGIS Pro 中所有快捷键一网打尽
提高效率 |ArcGIS Pro 中所有快捷键一网打尽
156 0
|
4月前
|
数据采集 存储 编解码
使用Arcgis pro做流域分析(河网+集水区)
【8月更文挑战第10天】使用ArcGIS Pro进行流域分析包括河网与集水区提取。首先准备DEM及河流数据,然后在软件中加载。若无河网数据,可用“Fill”填洼、“Flow Direction”计算流向、“Flow Accumulation”计算累积量,并通过“Stream Definition”定义河流。集水区分析则使用“Watershed”工具确定特定点的流域范围。最后,通过符号化展示结果,并结合其他数据深入分析流域特性。注意数据质量与参数选择以保证分析准确性。
249 1
|
4月前
|
Python
ARCGIS PRO DSK GraphicsLayer创建文本要素
ARCGIS PRO DSK GraphicsLayer创建文本要素
699 5
|
7月前
|
机器学习/深度学习 弹性计算 算法
ArcGIS Pro遥感影像分类:随机森林、支持向量机方法
ArcGIS Pro遥感影像分类:随机森林、支持向量机方法
383 1
|
存储 数据可视化 数据管理
在ArcGIS Pro中使用栅格函数
在ArcGIS Pro中使用栅格函数
170 1
|
7月前
|
存储 数据管理 定位技术
2024最新ArcGIS Pro 3.0.2 官方原版简体中文直装版
ArcGIS Pro是由Esri开发的专业地理信息系统(GIS)软件,提供先进的地图制图、空间分析和数据管理功能。它支持多维数据集成,具有直观的用户界面,适用于各种地理信息应用,包括城市规划、环境管理和资源分析。
|
7月前
|
定位技术 Python
ArcGIS中ArcMap通过模型构建器ModelBuilder导出地理与投影坐标系转换Python代码的方法
ArcGIS中ArcMap通过模型构建器ModelBuilder导出地理与投影坐标系转换Python代码的方法
122 2
|
7月前
|
定位技术 Python
ArcGIS批量拼接大量栅格遥感影像:Mosaic工具
ArcGIS批量拼接大量栅格遥感影像:Mosaic工具
250 1
|
7月前
|
并行计算 定位技术
ArcGIS中ArcMap分割栅格Split Raster工具没有结果的解决
ArcGIS中ArcMap分割栅格Split Raster工具没有结果的解决
230 1
|
7月前
ArcGIS中ArcMap为不含坐标系的图层添加地理坐标系或投影坐标系
ArcGIS中ArcMap为不含坐标系的图层添加地理坐标系或投影坐标系
158 1