Python 和地理处理

Python 是 ArcGIS 的脚本语言。ArcGIS 包含一个名为 ArcPy 的 Python 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.Buffer_analysis(roads, output, "100 Feet")

设置工具参数

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

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

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

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

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

工具输出

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

下面的示例说明了如何在执行地理处理工具后获取结果对象的输出:

import arcpy
arcpy.env.workspace = "c:/city/data.gdb"
# Geoprocessing tools return a result object 
result = arcpy.CopyFeatures_management("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.CopyFeatures_management("roads", "#")

构建地理处理工作流

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

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