了解脚本工具参数
几乎所有工具都具有参数,可在工具对话框或脚本中设置参数值。执行工具时,会将参数值发送到脚本。脚本将读取这些值,然后继续执行操作。
下图显示了一个脚本工具对话框,其中包含三个参数:输入工作空间、裁剪要素类和输出工作空间。输入工作空间中的所有要素类都被裁剪为裁剪要素类(使用裁剪工具)并被写入输出工作空间。
在上图中,于工具对话框中输入参数值并单击确定按钮后,脚本使用 GetParameterAsText() 读取参数值,如下所示:
# Import arcpy site-package # import arcpy from arcpy import env # Read the parameter values: # 1: input workspace # 2: input clip features # 3: output workspace # inWorkspace = arcpy.GetParameterAsText(0) clipFeatures = arcpy.GetParameterAsText(1) outWorkspace = arcpy.GetParameterAsText(2) env.workspace = inWorkspace
参数顺序必须匹配
工具对话框中的参数顺序必须与脚本中的参数顺序一致。例如,如果将脚本工具中的裁剪要素从参数 2 更改为参数 1,还必须更改脚本工具的属性中的参数顺序。
sys.argv 和 arcpy.GetParameterAsText
读取参数的方法有两种:sys.argv 和 arcpy 函数 GetParameterAsText()。可使用任何一种方法。上例可被重新编写以使用 sys.argv:
# Read the parameter values: # 1: input workspace # 2: input clip features # 3: output workspace # inWorkspace = sys.argv[1] clipFeatures = sys.argv[2] outWorkspace = sys.argv[3] env.workspace = inWorkspace
sys.argv 将单个参数限制为 1024 个字符。GetParameterAsText() 没有字符限制。仅仅出于此原因,建议您使用 GetParameterAsText。
与以 0 为基础(第一个参数是 0)的 GetParameterAsText() 对照,sys.argv 以 1 为基础(第一个参数是 1)。
在 ArcGIS 9.2 之前的版本中,独立脚本(从操作系统提示符执行的脚本)只能使用 sys.argv - GetParameterAsText() 只处理脚本工具。在版本 9.2 中,此限制已被移除。您可查看使用 sys.argv 的代码示例。这些示例都是在 9.2 之前的版本中编写的。在版本 9.2 和更高版本中,可用 GetParameterAsText() 替换 sys.argv。只是在减少参数索引时要格外小心:sys.argv[1] 会变为 GetParameterAsText(0)。
参数数据类型
每个脚本工具参数都有关联的数据类型。打开脚本工具对话框后,地理处理使用数据类型检查参数值。例如,如果为具有工作空间数据类型的参数输入要素类,地理处理将生成错误(对话框中的红色“X”),如下所示。
数据类型也可用于浏览数据 - 只有与参数数据类型匹配的数据才会显示在浏览对话框中。
了解参数和数据类型的另一种方式是地理处理不会将值发送给数据类型不正确的脚本。这是创建脚本工具的一个明显优势 - 将参数值发送给脚本之前,针对参数数据类型检查该参数值。