前言
虽然说ArcGis中已经自带了大量的工具,但面对某些特殊应用场景时还是无法满足,这时就可以考虑下创建自定义工具。开发人员将自己的逻辑封装为一个工具,直接提供给其他电脑上安装ArcGIS的人员使用。接下来就用一个简单的案列来说明自定义工具创建的全流程。
环境:Windows10、ArcGis10.2.2
数据:一份含有B,C,D三种类型要素的GDB数据。
脚本:GetEachClassCount.py用来获取工作空间中每图层的类型和记录数。脚本代码:
# -- coding:cp936 -import arcpyimport csvimport sysreload(sys)sys.setdefaultencoding('cp936')if __name__ == '__main__':try:root_path = arcpy.GetParameterAsText(0) # 数据路径csv_path = arcpy.GetParameterAsText(1) # csv路径arcpy.env.workspace = root_patharcpy.env.overwriteOutput = Truefile = open(csv_path, 'wb')csv_writer = csv.writer(file)csv_writer.writerow(['要素名称', '要输类型', '记录数'])for c in arcpy.ListFeatureClasses():ftDesc = arcpy.Describe(c)icount = int(arcpy.GetCount_management(c).getOutput(0)) # 获取记录数csv_writer.writerow([c, ftDesc.shapeType, icount])arcpy.AddMessage('{0}_{1}_{2}'.format(c, ftDesc.shapeType, icount))file.close()except Exception, ex:arcpy.AddMessage(ex)
制作工具步骤
第一步:在ArcGis的Catalog窗口中,找一个自己喜欢的任意文件夹,新建一个工具箱Toolbox
第二步:在新建的工具箱中创建一个脚本工具
1、创建完后出现第一个设置界面:
配置路径:如果是在本机使用脚本工具,使用绝对路径就够了,但是如果希望分享自己的工具给别人,就要考虑路径问题。也就在它电脑运行脚本工具时,相关的脚本文件和其他用到的资源能否访问到。
2、点击下一步,出现第二个设置界面选择脚本文件
3、点击下一页后,就出现了工具的输入输出参数设置界面。几乎所有工具都具有参数,可在工具对话框或脚本中设置参数值。执行工具时,会将参数值发送到该工具的源代码。工具将读取这些值,然后继续执行操作。
工具对话框中的参数顺序必须与脚本中的参数顺序一致。
参数属性
1)类型:有三种 Required、Optional和Derived,分别表示“必需”、“可选”或“派生”。“派生”表示工具的用户未输入参数值。输出参数通常是“派生”类型。
2)方向: 两种,Input 和 Output,表示输入和输出,大部分情况都是使用 Input 来获得参数,Output 用于获得最后的成果数据。如果参数的“类型”是“派生”,则方向始终是“输出”。
3)多值:Yes 或者 No。如果希望得到一组值,可将“多值”设置为“是”;如果希望得到单个值,则设置为“否”。
4)默认:设置一个控件的默认值,直接输入即可。可配合多值一同使用时,使用;(英文的分号)分开。
5)环境:工具箱的环境设置,比如掩膜、容差范围、默认数据库位置等,一般不预先设置;如果参数的默认值来自于环境设置,则此属性将包含环境设置的名称。
6)过滤器:选择文件类型可以在选择文件时只显示特定格式的文件例如【csv;txt】;如果希望仅为参数输入特定的数据集或值,可以指定过滤器。过滤器类型有六种,您可以根据参数的数据类型来选择过滤器的类型。
7)获取自:此属性适用于派生的输出参数以及输入参数的数据类型。对于派生的输出参数,获取自可以设置为包含输出定义的参数。对于输入参数,获取自可以设置为包含输入所需信息的参数。这是个什么意思呢?比如我们想要获取图层A的某个字段,获取源就是图层A。
8)符号系统:在最下面还有一个符号系统,此属性仅适用于输出参数。值为图层文件 (.lyr) 的位置,该文件中包含用于显示输出的符号系统。
4、点击【完成】,此时自定义工具就已经制作好了。
第三步:运行工具并查看结果
执行工具界面:
到这里自定义工具已经成功执行完成,并且输出了结果如下:
嵌入脚本
自定义工具制作好之后,接下来就要分享给其他电脑上安装ArcGIS的人员使用。只不过 Python 脚本和自定义工具箱是分离的,创建的工具在运行的时候会根据相对路径位置(如果你一开始勾选了存储相对路径名)寻找 Python 脚本,找到并运行。所以这就需要同时将Python脚本和自定义工具箱分享给他人。此时就可以使用嵌入脚本这个功能了。
嵌入脚本:将 Python 脚本直接嵌入(存储在)某工具箱中。随后脚本工具执行时,将使用存储在该工具箱中的 Python 代码。这样做可以免去管理和共享众多额外文件的麻烦。
此外,还可以点击Set Password对脚本工具设置密码,工具被密码保护后,包括编辑、调试以及导出脚本在内几个选项均会在允许继续操作前提示输入密码。
帮助文档
工具刚制作好时,生成帮助文档并不是很详细。此时可以进一步细化帮助文档,让使用者了解如何使用此工具。右键脚本工具,点击Item Description。
点击Edit后就能添加一些更详细的说明了
好啦,关于arcgis如何制作自定义工具箱做说到这里。
榆柳萧疏楼阁闲,月明直见嵩山雪。--孟郊《洛桥晚望》