概述
前面已经介绍了如何对名称、标签、选项等进行设置,还需要设置参数。这一节以多重缓冲区脚本为例,开展了介绍,以便于我们理解脚本工具参数设置。简单总结一下,这一节需要注意参数设置的数据类型,关于是如何传递参数值到代码,也是需要理解一下。
原文链接
3.5 理解脚本工具的参数设置
地理处理工具需要设置参数,关于参数需要在对话框设置才可以。
创建参数需要以下步骤:
1、在脚本中包含代码,接受参数值
2、 在脚本工具属性中设置参数
这几个步骤需要实际去操作一下就了解了。步骤不需要按照顺序完成,完成了即可。
原文中介绍了使用内置工具:the Multiple Ring Buffer 来检查步骤是如何实现的。这个例子包含了几种不同类型的参数,并且他是一个可以去查看代码的脚本工具。对话框如下图所示:
这个工具包括7个参数,前三个参数必须。同时,书的作者提到,arcgis pro脚本工具的属性是无法直接在工具上打开的,只有在工具列表中右键工具,才能找到并打开工具属性。
打开上面的工具的属性(工具路径:Analysis Tools --> Proximity),能够看到工具的脚本文件和选项是灰色的,是不可以修改的。
打开参数对话框,可以看到7个参数
参数从0开始编号。其中还包括每个参数的详细的信息,包括标签、名称、数据类型、参数是否必须、方向(输入或输出)等。
查看现有的脚本工具,能够帮助去设置我们自己的脚本工具,比着葫芦画瓢。例如:outside polygons only参数是一个布尔类型,
默认的设置时false,表示打开工具时默认不勾选。但是对于内置的脚本工具,我们是没有办法修改的。
对上面的脚本工具有一个初步的理解,然后还需了解python是如何处理参数。当用户在multiple ring buffer中指定参数值时,工具可以工作,工具运行后会将指定的参数传递给脚本。查看脚本能够理解代码中这些参数是如何传递的。
其中注释介绍了代码的信息等。我们要关注的内容在第42行
工具使用了arcpy的两个函数:GetParameterAsText
和GetParameter
,七个参数分别使用了7个索引值接收,从0 到6。这些脚本中的参数与工具对话框中的参数完全匹配。当用户使用工具对话框指定工具参数然后运行时,就会将值通过索引传递给脚本。
关于函数:GetParameterAsText
<variable> = arcpy.GetParameterAsText(<index>)
该函数只有一个参数,便是索引号,表示参数的数字位置,工具对话框上设置的参数以列表的形式发送给脚本,函数分配值给脚本中的变量。函数以文本字符串的形式接收参数,即使对话框中的参数是不同的数据类型,数字、布尔、其他类型都可以转换为字符串,并且将其解释为代码能理解的正确类型。例如,outsidePolygons 的代码设置为:
outsidePolygons = arcpy.GetParameterAsText(6)
if outsidePolygons.lower() == 'true':
sideType = 'OUTSIDE_ONLY'
else:
sideType = ' '
工具对话框的参数是布尔类型,输入的值会被转换为字符串,条件语句是使用字符串 true,而不是布尔型的True
另一个例子是缓冲区的单位设置,脚本中称之为“unit”,在用户的对话框中,可以选择单位是米或其他的单位。在脚本中的设置是:
unit = arcpy.GetParameterAsText(3).upper()
其中.upper
方法将输入的字符串都转为大写的格式,生成FEET或者KILOMEATERS。这个工具对话框上的距离参数是使用函数GetParameter()
接收。使用这个函数是因为这个缓冲区工具是建立多环缓冲,其缓冲的驱离包括多个值,而不是单个值。GetParameter()
函数以列表的形式读取参数。
对于上面两个函数的替代方案是使用sys.argv
或者system arguments。sys.argv
的索引是从1开始的,但是他也有局限性:仅仅能够接收有限数量的字符。
上面的示例脚本工具:多重缓冲区是使用自定义的函数get_parameter_values来接受参数值,并且先定义后调用。这里作者提到了不需要使用自定义函数来接收函数值,在很多更简单的脚本中不需要使用这种做法。
每个工具参数都有自己的数据类型相关联。数据类型的好处是工具对话框不会将错误的类型的值发送到脚本,进行了一个初步的检验,不必再自己添加代码检查数据类型,这个任务由工具对话框开展。
多重缓冲区的参数数据类型有:要素图层、要素类、双精度列表、字符串和布尔值。从:address locator 到 z-domain,脚本工具的参数可以使用许多其他的数据类型。应该谨慎选择参数的数据类型,因为他们控制了对话框和脚本之间的相互联系。
为参数分配数据类型后,工具对话框可以使用该数据类型检查参数值。例如输入一个错误的类型,看看是否会报错
内置的错误检查机制可防止用户使用错误的参数来运行工具。工具运行时,对话框已将参数 Input Features 验证为要素图层,无需在脚本中添加额外代码即可验证这种情况。
数据类型属性也用于使用工具对话框中的下拉菜单选择数据集以及浏览文件夹以获取数据时。仅显示与参数数据类型匹配的数据,以 防止输入错误的数据路径。在前面的示例中,如果将栅格数据集 C:Rasterelevation 作为图层添加到当前地图,则该栅格图层将不会显示在输入要素参数的下拉选项中。
最后
以上就是丰富白昼为你收集整理的第三章 ArcGIS Pro创建 python 脚本工具(三)的全部内容,希望文章能够帮你解决第三章 ArcGIS Pro创建 python 脚本工具(三)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复