Python 或其他语言的脚本可集成到模型中,方法是将脚本转换为脚本工具,然后将此脚本工具添加到模型中。这可在以下情况下使用:需要使用 Python 或其他脚本语言逻辑来增强模型或在 ArcGIS 中访问外部包或程序。
在模型中集成脚本是从实际脚本开始的。脚本必须以能够集成到地理处理框架的方式进行编写。有关详细信息,请参阅编写 Python 脚本。
编写脚本后,可创建脚本工具并将其添加到工具箱中。该脚本工具可添加到模型中,也可用于为模型增加额外的功能。
应用示例
ArcGIS 本身并未提供处理 HTML 的方法。但通过 Python 脚本可以访问用来创建和修改 HTML 文档的方法和函数。要将此 HTML 功能与 ArcGIS 进行集成,可在模型中嵌入 Python 脚本工具。
以下示例对宗地图层执行空间和属性查询,并生成一个 HTML 报表,用来详细描述用户指定的宗地及其相邻宗地的属性。HTML 是在 Python 脚本中生成的,而该脚本是在模型中执行的。
Python 脚本
以下脚本 tabletohtml.py 用于读取输入表的内容,并生成一个 HTML 报表。此脚本代码位于本主题的结尾处。
创建脚本工具
以下步骤介绍如何创建用来执行 tabletohtml.py 脚本的脚本工具。有关创建脚本工具的详细信息,请参阅创建脚本工具快速浏览
- 右键单击工具箱,然后单击添加 > 脚本。
这会打开添加脚本 向导。
- 使用添加脚本 向导指定脚本的常规属性。
- 在添加脚本 向导的下一页,指定在运行脚本工具时将执行哪个脚本。
- 在添加脚本 向导的下一页,指定脚本工具的参数属性。该脚本工具具有两个参数:输入表和输出 HTML 文件。此外,在 tabletohtml.py 中也定义了这些参数。
- 单击完成将脚本工具添加到工具箱。
将脚本工具添加到模型
- Parcel Report 模型对宗地图层执行空间和属性查询。将 Table to HTML 脚本工具添加到模型便可添加生成 HTML 所需的功能。
- 将 Select Layer By Location 工具的输出作为输入连接到该脚本工具,然后设置脚本工具的输出路径(即要生成的 HTML 文件的路径)。或者,将脚本工具的输出重命名为 Report,并使该变量成为模型参数。
import arcpy
import sys
import string
import os
tablePath = arcpy.GetParameterAsText(0)
filePath = arcpy.GetParameterAsText(1)
outfile = open(filePath, "w")
fields = arcpy.ListFields(tablePath)
fieldNames = []
for field in fields:
if (field.type <> "Geometry" and field.type <> "BLOB"):
fieldNames.append(field.name)
outfile.write("<table border=""1"">\n")
outfile.write("<tr>\n")
for fieldName in fieldNames:
outfile.write("<th>" + fieldName + "</th>\n")
outfile.write("</tr>\n")
for row in arcpy.da.SearchCursor(tablePath, fieldNames):
outfile.write("<tr>\n")
for value in row:
outfile.write("<td>" + str(value) + "</td>\n")
outfile.write("</tr>\n")
outfile.write("</table>\n")
outfile.flush()
outfile.close()