打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
如何在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)

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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
ArcGIS Python的简单应用
ArcGIS 每天一个高级制图诡计:2 浮雕效果
arcGIS使用Python脚本工具
【技术】如何利用ArcGIS模型构建器批量将shp转为excel表格?
批量统计zonal as table
在ArcGIS中创建Python工具(三) | kikita & Maps
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服