Python 和地理处理

Python 是 ArcGIS 的脚本语言。 ArcGIS 包含一个名为 ArcPyPython API,通过它您可以访问所有地理处理工具以及帮助您自动执行 GIS 任务的附加函数、类和专用模块。 您可以编写结合使用 ArcPy 与各种功能集(由 Python 标准库和第三方库提供)的脚本。 可以在 Python 窗口中通过脚本工具使用 ArcGIS Notebooks 运行 Python 命令和脚本,也可以ArcGIS Pro 外部运行 Python。 但在运行 Python 时,命令的工作原理在本质上相同并使用相同的地理处理工具。

下面是使用 ArcPy 的简单地理处理脚本。

import arcpy

roads = "c:/base/data.gdb/roads"
output = "c:/base/data.gdb/roads_Buffer"

# Run Buffer
arcpy.analysis.Buffer(roads, output, "100 Feet")

设置工具参数

每个地理处理工具都具有一组固定的参数,这些参数为工具提供运行所需的信息。 在 Python 中使用工具时,必须正确设置工具的参数值,以便在脚本运行时工具能够运行。 提供一组有效的参数值后,工具即准备就绪,可以运行。 可将大多数参数指定为字符串。 可将一些复杂参数指定为更易于处理的对象而非长字符串。

字符串是唯一标识参数值的文本,如数据集的路径或关键字。 在下面的代码示例中,为缓冲区工具定义了输入和输出参数。 请注意,工具名称要追加其工具箱的别名。 在该示例中,两个字符串变量用于定义输入和输出参数,以便对工具的调用更容易阅读。

大部分地理处理工具同时包含必选参数和可选参数。 通常,在许多情况下都存在多个不需要进行指定的可选参数。 有两种方法可以处理这些未使用的参数。 一种方法是保持所有可选参数有序,然后将您不需要的参数引用为空字符串 ""、井号 "#" 或类型为 None 的参数。

import arcpy
arcpy.management.AddField("schools", "school_id", "LONG", "", "", "", "", "NON_NULLABLE")
另一种方法是使用关键字参数,并使用参数名称来分配值。 使用关键字参数可以跳过未使用的可选参数或以不同的顺序指定它们。

import arcpy
arcpy.management.AddField("schools", "school_id", "LONG", field_is_nullable="NON_NULLABLE")

工具输出

ArcPy 会将工具的输出值作为 Result 对象返回。 Result 对象用于维护有关工具运行方式的信息,包括消息、参数以及输出数据集路径和值。 即使在运行了多个其他工具后仍可保留这些结果。

以下示例展示了如何在地理处理工具运行后从 Result 对象获取输出:

import arcpy

arcpy.env.workspace = "c:/city/data.gdb"

# Geoprocessing tools return a Result object 
result = arcpy.management.CopyFeatures("roads", "urban_roads")

# A print function will display the string representation of the output.
print(result)

# A Result object can be indexed to get the output value.
result_value = result[0]

如果创建的输出仅为大型工作流的一个中间阶段,那么输出参数可以省略,以便工具为输出创建唯一路径和名称。 可以通过将输出设置为 "#"None 来完成此操作,或如果输出是所使用的最后一个参数,则可以完全跳过此操作。 在每种情况中,返回值都是新数据源的完整路径。

import arcpy
arcpy.env.workspace = "c:/city/data.gdb"

result = arcpy.management.CopyFeatures("roads", "#")

构建地理处理工作流

ArcPy 具有大量有用的类和函数,除了按顺序运行工具外还可帮助您扩展地理处理脚本。 函数可用于列出特定数据集以执行批处理操作,描述数据集以通过编程方式读取其属性,或执行众多其他有用的地理处理任务。

了解有关使用 ArcPy 函数构建地理处理脚本的详细信息