将模型导出到 Python 脚本的选项有助于帮助您了解如何在 Python 中使用工具和环境,并且经常可以推动您的开发。编辑和完成脚本后,可将脚本作为脚本工具添加到工具箱或模型中,之后即可像运行任何其他地理处理工具一样运行此工具。要将模型导出为脚本,请遵循以下步骤:
- 通过“模型构建器”中的菜单,指向并单击模型 > 导出 > 至 Python 脚本。
- 单击保存位置下拉箭头,然后导航到要保存脚本的位置。
- 输入脚本的文件名。
- 单击保存。
编辑导出的 Python 脚本
在某些情况下,导出的模型会无法正常运行。将模型导出为脚本时,请考虑以下几点:
- 如果需要覆盖数据,可将 arcpy.env.overwriteOutput 属性设置为 True。
- 如果模型使用的图层或表视图不是在原始模型中创建,则必须使用创建要素图层和创建表视图等工具在脚本中创建这些图层或表视图。
- 模型的数据元素会直接转换为导出脚本中的变量。避免命名 Python 中不兼容的数据元素(例如 class、global 和 return)。对于保留关键字的完整列表,请使用 Python 的关键字模块。
import keyword print keyword.kwlist
- 如果模型使用了任何行内变量替换(如 %workspace%、%scratchworkspace%、%n%、%i% 或 %variable name%),则必须使用正确的值来替换这些变量。
- 如果模型使用了迭代器,则迭代逻辑将不会被导出,而必须在 Python 中替换为循环语句。
- 只有列表变量中的第一个值将被导出。
- 如果模型使用了要素集或记录集,则将在导出中创建下列代码。通过将 Feature_Set 变量设置为 in_memory 要素类,可预防代码为空或无效输入。由于执行时 in_memory 要素类不存在,因此您需将路径更新为指向已知在执行时存在的要素类。您还可更改逻辑来抛出错误消息并停止执行,如果这样对您的工作流更有意义。
使用要素集参数从模型中导出
Feature_Set = arcpy.GetParameterAsText(0) if Feature_Set == '#' or not Feature_Set: Feature_Set = "in_memory\\{F15C6411-0F4F-4A68-9BAC-29D6E7874669}" # provide a default value if unspecified
- 如果模型使用了“仅模型”工具(如合并分支、收集值或计算值),则这些工具不会在 Python 中运行。需要实现与这些工具所提供的等效的 Python 功能。例如,需要使用 if/else 逻辑在脚本中执行分支。
- 如果模型包括子模型,则不会导出这些子模型中的内容。而是必须引用工具箱并需要在脚本内调用模型工具。