了解工具语法
工具参考页面的语法区域提供了每个工具参数的详细信息。还提供了在 Python 中使用工具所采用的语法。
创建可执行特定工具的 Python 代码的简单方法是使用结果 窗口,如下所示:
- 使用工具对话框执行工具。
- 执行工具之后,打开结果 窗口。
- 右键单击结果,然后单击复制为 Python 代码片段。
- 在 Python 代码中,粘贴复制的代码片段。
语法区域还适用于在 .NET 中使用 IGeoProcessor.Execute()。(有关在 .NET 中调用地理处理工具的详细信息,请参阅在线 SDK 文档如何运行地理处理工具。)
工具特征
语法标头下面的第一行包含工具特征。
工具名称和别名
在 Python 中,使用工具名称代替工具标签。
- 工具标签显示在工具对话框的顶端或目录 窗口中。
- 在 Python 中,工具箱的别名紧随工具名称之后,中间用下划线隔开。例如,在 Python 中,“交集取反”工具被标识为 SymDiff_analysis。
可选参数
工具的参数中,有些是必选的,有些是可选的。可选参数由大括号 ( {} ) 括起;必选参数则不会。
参数类型 |
符号 |
意义 |
---|---|---|
必填信息 |
必需参数。这些参数始终是在命令中靠前的参数。您必须为必需参数赋值。 | |
可选 |
{ } |
可选参数。这些参数始终位于必需参数之后。如果不为可选参数输入值,则会为其计算并应用默认值。参数的默认值可在工具的帮助中查找。 |
将可选参数名称作为 Python 中的快捷方式十分有用。您可以使用参数名称明确地设置参数,而不必使用一组空引号 ("") 或一个井号 ("#") 专门跳过其他未使用的可选参数。
# Use the parameter name to bypass unused optional arguments arcpy.AddField_management("c:/data/streets.shp", "Address", "TEXT", field_length=120)
参数表
工具特征后面是具有三列的参数表:参数、说明和数据类型。参数表中的各行始终按参数顺序(与工具特征一致)排列。
工具对话框能够以不同于实际参数顺序的顺序显示参数,因此,只有在极少数情况下,工具对话框中的参数顺序才可能与参数表中的顺序不同。对于 Python,始终使用参数表中显示的顺序。
参数列
此列中的单元格包含参数名称、是否为可选参数以及用于接受列表的参数的列表语法,如下图所示。
外观 | 描述 |
---|---|
简单列表。简单列表称为多值参数。 | |
由多个列表组成的列表。数据类型为“值表”。只有内置工具才具有带“值表”数据类型的参数。 |
简单列表
简单列表包含一系列单一值。在上述示例中,Distances 参数为双精度数据类型(如数据类型列中所示)。可使用以下其中一种方法表示此列表:
# Method 1: A list of numbers dist = [10.0, 20.0, 30.0] # Method 2: A list of strings dist = ["10.0", "20.0", "30.0"] # Method 3: String representation of a list dist = "10.0; 20.0; 30.0"
由多个列表组成的列表
由多个列表组成的列表的数据类型为“值表”。在上述示例中,in_features 参数是由多个列表组成的列表,其中各个列表包含要素数据集或图层的路径和一个可选的整型等级。可使用以下其中一种方法表示此参数:
# Method 1: A list of lists inFeatures = [["counties", 2],["parcels", 1],["state"]] # Method 2: A list of strings inFeatures = ["counties 2", "parcels 1", "state"] # Method 3: String representation, each list separated by a semicolon inFeatures = "counties 2; parcels 1; state"
如不确定多值或值表的字符串语法,可执行以下操作:
- 使用工具对话框执行工具。
- 执行工具之后,打开结果 窗口。
- 右键单击结果,然后单击复制为 Python 代码片段。
- 在 Python 代码中,粘贴复制的代码片段。
说明列
此列中的单元格提供有关参数用途及其设置方式(包括关键字选项)的详细信息。大多数情况下,此说明与工具的侧面板帮助中显示的内容相同。但某些情况下,参数说明可能与侧面板帮助中显示的内容略有不同。例如,工具对话框会针对每个布尔型 (true/false) 参数显示有复选框,但语法中的描述则具有两个关键字字符串,一个表示 true 状态,另一个表示 false 状态。
关键字为字符串;调用工具时始终用引号括起关键字。例如,“AddField”工具具有以下字段类型的关键字:
# Add field idField with data type of long arcpy.AddField_management("Parks", "idField", "LONG", field_is_nullable="NULLABLE", field_is_required="NON_REQUIRED")
数据类型
每个工具参数都有关联的数据类型。一些简单的数据类型包括字符串(任意一组字母数字字符)、布尔型(true 或 false 值)和长整型(介于 -2147483648 和 2147483647 之间的整数值)。除了这些简单的数据类型之外,还有很多专门针对 ArcGIS 中存在的数据(例如坐标系和范围)而构建的其他数据类型。
使用脚本对象
工具参数通常使用简单文本字符串来定义。数据集名称、路径、关键字、字段名称、容差、域名可通过带引号的字符串指定。
对于需要多个属性的较复杂参数,难以使用简单字符串对其进行定义。这种情况下可使用类(例如,SpatialReference、ValueTable 和 Point 类)来定义这些字符串,而不必输入复杂的长文本字符串。每个工具的文档中都包含一个脚本实例,介绍如何定义和使用各个工具参数。
在下例中,SpatialReference 对象被创建并用来定义由 CreateFeatureClass 工具创建的新要素类的输出坐标系。
import arcpy inputWorkspace = "c:/temp" outputName = "rivers.shp" prjFile = "c:/projections/North America Equidistant Conic.prj" spatialRef = arcpy.SpatialReference(prjFile) # Run CreateFeatureclass using the spatial reference object # arcpy.CreateFeatureclass_management(inputWorkspace, outputName, "POLYLINE", "", "", "", spatialRef)
在许多地理处理工作流中,您可能需要使用坐标和几何信息运行特定操作,但不一定想经历创建新(临时)要素类、使用光标填充要素类、使用要素类,然后删除临时要素类的过程。可以使用几何对象替代输入和输出,从而使地理处理变得更简单。可以使用 Geometry、Multipoint、PointGeometry、Polygon 或 Polyline 类从头开始创建几何对象。